diff --git a/compat/Prelude.hs b/compat/Prelude.hs
new file mode 100644
--- /dev/null
+++ b/compat/Prelude.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE PackageImports #-}
+{-# LANGUAGE CPP #-}
+
+module Prelude
+(
+  module P,
+
+#if MIN_VERSION_base(4,8,0)
+#else
+  (<$>),
+  Monoid(..),
+  Applicative(..),
+#endif
+
+)
+where
+
+import "base" Prelude as P
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Data.Functor ((<$>))
+import Data.Monoid(Monoid(..))
+import Control.Applicative (Applicative(..))
+#endif
diff --git a/pdf-toolbox-viewer.cabal b/pdf-toolbox-viewer.cabal
--- a/pdf-toolbox-viewer.cabal
+++ b/pdf-toolbox-viewer.cabal
@@ -1,5 +1,5 @@
 name:                pdf-toolbox-viewer
-version:             0.0.3.2
+version:             0.0.3.3
 synopsis:            Simple pdf viewer
 description:         Proof of concept, only for debuging
 homepage:            https://github.com/Yuras/pdf-toolbox
@@ -19,7 +19,10 @@
 
 executable pdf-toolbox-viewer
   main-is:             viewer.hs
-  build-depends:       base >= 4.6 && < 4.8,
+  hs-source-dirs:      .
+                       compat
+  other-modules:       Prelude
+  build-depends:       base >= 4.6 && < 5,
                        bytestring,
                        text,
                        transformers,
diff --git a/viewer.hs b/viewer.hs
--- a/viewer.hs
+++ b/viewer.hs
@@ -6,7 +6,6 @@
 )
 where
 
-import Data.Functor
 import qualified Data.Traversable as Traversable
 import qualified Data.Map as Map
 import qualified Data.ByteString.Char8 as BS8
