diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+1.4.2
+
+* Add `Semigroupoid` instance for `Fold`
+* Increase upper bound on `contravariant` and `profunctors`
+
 1.4.1
 
 * Add `Control.Scanl`
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# `foldl` v1.4.1
+# `foldl` v1.4.2
 
 Use this `foldl` library when you want to compute multiple folds over a
 collection in one pass over the data without space leaks.
diff --git a/foldl.cabal b/foldl.cabal
--- a/foldl.cabal
+++ b/foldl.cabal
@@ -1,5 +1,5 @@
 Name: foldl
-Version: 1.4.1
+Version: 1.4.2
 Cabal-Version: >=1.8.0.2
 Build-Type: Simple
 License: BSD3
@@ -7,7 +7,6 @@
 Copyright: 2013 Gabriel Gonzalez
 Author: Gabriel Gonzalez
 Maintainer: Gabriel439@gmail.com
-Tested-With: GHC == 7.10.2, GHC == 8.0.1
 Bug-Reports: https://github.com/Gabriel439/Haskell-Foldl-Library/issues
 Synopsis: Composable, streaming, and efficient left folds
 Description: This library provides strict left folds that stream in constant
@@ -35,9 +34,10 @@
         containers   >= 0.5.0.0  && < 0.6 ,
         unordered-containers        < 0.3 ,
         hashable                    < 1.3 ,
-        contravariant               < 1.5 ,
+        contravariant               < 1.6 ,
         semigroups   >= 0.17     && < 1.19,
-        profunctors                 < 5.3 ,
+        profunctors                 < 5.4 ,
+        semigroupoids >= 1.0     && < 5.4 ,
         comonad      >= 4.0      && < 6   ,
         vector-builder              < 0.4
     Exposed-Modules:
diff --git a/src/Control/Foldl.hs b/src/Control/Foldl.hs
--- a/src/Control/Foldl.hs
+++ b/src/Control/Foldl.hs
@@ -148,6 +148,7 @@
 import Data.Maybe (fromMaybe)
 import Data.Monoid hiding ((<>))
 import Data.Semigroup (Semigroup(..))
+import Data.Semigroupoid (Semigroupoid)
 import Data.Profunctor
 import Data.Sequence ((|>))
 import Data.Vector.Generic (Vector, Mutable)
@@ -185,6 +186,7 @@
 import qualified Data.Vector.Generic.Mutable as M
 import qualified VectorBuilder.Builder
 import qualified VectorBuilder.Vector
+import qualified Data.Semigroupoid
 
 {-| Efficient representation of a left fold that preserves the fold's step
     function, initial accumulator, and extraction function
@@ -232,6 +234,18 @@
 instance Semigroup b => Semigroup (Fold a b) where
     (<>) = liftA2 (<>)
     {-# INLINE (<>) #-}
+
+instance Semigroupoid Fold where
+    o (Fold step1 begin1 done1) (Fold step2 begin2 done2) = Fold
+        step
+        (Pair begin1 begin2)
+        (\(Pair x _) -> done1 x)
+      where
+        step (Pair c1 c2) a =
+            let c2' = step2 c2 a
+                c1' = step1 c1 (done2 c2')
+            in  Pair c1' c2'
+    {-# INLINE o #-}
 
 instance Monoid b => Monoid (Fold a b) where
     mempty = pure mempty
