diff --git a/composition-prelude.cabal b/composition-prelude.cabal
--- a/composition-prelude.cabal
+++ b/composition-prelude.cabal
@@ -1,5 +1,5 @@
 name:                composition-prelude
-version:             0.1.0.4
+version:             0.1.1.0
 synopsis:            Higher-order function combinators
 description:         Replacement for `composition` or `composition-exta`, exporting everything in one sane module.
 homepage:            https://github.com/vmchale/composition-prelude#readme
@@ -24,11 +24,13 @@
 library
   hs-source-dirs:      src
   exposed-modules:     Control.Composition
-  build-depends:       base >= 4.9 && < 5
+  build-depends:       base >= 4.7 && < 5
   default-language:    Haskell2010
   if flag(development)
     ghc-options: -Werror
-  ghc-options:         -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wmissing-import-lists
+  if impl(ghc >= 8.0)
+    ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates -Wmissing-import-lists
+  ghc-options:         -Wall
 
 source-repository head
   type:     git
diff --git a/src/Control/Composition.hs b/src/Control/Composition.hs
--- a/src/Control/Composition.hs
+++ b/src/Control/Composition.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 module Control.Composition
     ( -- | Postcomposition
       (.*)
@@ -26,12 +28,26 @@
     ) where
 
 import           Control.Arrow ((&&&), (***))
+#if __GLASGOW_HASKELL__ <= 783
+import           Control.Monad (ap, join, (<=<), (>=>))
+#else
 import           Control.Monad (ap, join, (<=<), (=<<), (>=>))
+#endif
+#if __GLASGOW_HASKELL__ > 784
 import           Data.Function (fix, on, (&))
+#else
+import           Data.Function (fix, on)
+#endif
 
 infixr 8 .*
 infixr 8 -.*
 infixl 8 -$
+#if __GLASGOW_HASKELL__ <= 784
+infixl 1 &
+
+(&) :: a -> (a -> b) -> b
+(&) x f = f x
+#endif
 
 {-fish' :: (a -> c -> b) -> (b -> c -> c) -> a -> c -> c
 fish' f g x y = g (f x y) y
