diff --git a/composition-prelude.cabal b/composition-prelude.cabal
--- a/composition-prelude.cabal
+++ b/composition-prelude.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name: composition-prelude
-version: 1.4.0.2
+version: 1.4.0.3
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2017-2018 Vanessa McHale
@@ -32,10 +32,10 @@
         Control.Composition
     build-tools: cpphs -any
     hs-source-dirs: src
-    default-language: Haskell2010
+    default-language: Haskell98
     ghc-options: -Wall
     build-depends:
-        base >=4.3 && <5
+        base >=4.1 && <5
     
     if flag(development)
         ghc-options: -Werror
diff --git a/src/Control/Composition.hs b/src/Control/Composition.hs
--- a/src/Control/Composition.hs
+++ b/src/Control/Composition.hs
@@ -40,6 +40,12 @@
 #endif
 #if MIN_VERSION_base(4,8,0)
 import           Data.Function (fix, on, (&))
+#elif defined(MIN_VERSION_lens)
+#if MIN_VERSION_lens(4,0)
+import           Control.Lens  ((&))
+#elif defined(MIN_VERSION_microlens)
+import           Lens.Mico     ((&))
+#endif
 #else
 import           Data.Function (fix, on)
 #endif
@@ -62,9 +68,13 @@
 infixr 8 -.***
 infixr 8 -.****
 infixl 8 -$
-#if !(MIN_VERSION_base(4,8,0))
+#if !(MIN_VERSION_base(4,8,0)) && !defined(MIN_VERSION_lens) && !defined(MIN_VERSION_microlens)
 infixl 1 &
+#elif defined(MIN_VERSION_lens)
+#if !(MIN_VERSION_lens(4,0))
+infixl 1 &
 #endif
+#endif
 #if defined(MIN_VERSION_lens)
 #if !MIN_VERSION_lens(3,0)
 infixl 1 <&>
@@ -77,10 +87,15 @@
 infixl 1 <&>
 #endif
 
-#if !(MIN_VERSION_base(4,8,0))
+#if !(MIN_VERSION_base(4,8,0)) && !defined(MIN_VERSION_lens) && !defined(MIN_VERSION_microlens)
 (&) :: a -> (a -> b) -> b
 (&) x f = f x
+#elif defined(MIN_VERSION_lens)
+#if !(MIN_VERSION_lens(4,0))
+(&) :: a -> (a -> b) -> b
+(&) x f = f x
 #endif
+#endif
 
 #if !MIN_VERSION_base(4,8,0)
 axe :: (Monad m) => [a -> m ()] -> a -> m ()
@@ -103,7 +118,7 @@
 #endif
 biaxe = sequence_ .** bisequence'
 
-#if !(MIN_VERSION_base(4,7,0))
+#if !MIN_VERSION_base(4,7,0)
 -- | See
 -- [here](http://hackage.haskell.org/package/base-4.11.1.0/docs/Data-Bool.html#v:bool)
 -- for docs.
@@ -167,6 +182,10 @@
 
 {-# RULES
     "thread" forall f g. thread [f, g] = f . g
+  #-}
+
+{-# RULES
+    "thread" forall f g h. thread [f, g, h] = f . g . h
   #-}
 
 {-# RULES
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,4 +1,4 @@
-resolver: lts-10.3
+resolver: lts-11.6
 packages:
 - '.'
 extra-deps: []
