diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,8 +1,14 @@
+0.4.0.0
+=======
+
+- depend on microlens
+- compatibility with foldl 1.2.
+
 0.3.4.0
 =======
 
-- Removed lens-family dependency.
-- Solved BOM problem.
+- removed lens-family dependency.
+- solved bom problem.
 
 0.3.3.0
 =======
diff --git a/pipes-transduce.cabal b/pipes-transduce.cabal
--- a/pipes-transduce.cabal
+++ b/pipes-transduce.cabal
@@ -1,5 +1,5 @@
 Name: pipes-transduce
-Version: 0.3.4.0
+Version: 0.4
 Cabal-Version: >=1.8.0.2
 Build-Type: Simple
 License: BSD3
@@ -23,22 +23,23 @@
 Library
     HS-Source-Dirs: src
     Build-Depends:
-        base          >= 4        && < 5   ,
-        bytestring    >= 0.9.2.1           ,
-        text          >= 0.11.2.0          ,
-        transformers  >= 0.4.0.0           ,
-        bifunctors    >= 5.0               ,
-        foldl         >= 1.1               ,
-        free          >= 4.0               ,
-        pipes         == 4.*               ,
-        pipes-concurrency   >= 2.0.2       ,
-        pipes-group   >= 1.0.1             ,
-        pipes-parse                        ,
-        pipes-safe                         ,
-        pipes-text    >= 0.0.1.0           ,
-        pipes-bytestring                   ,
-        void          >= 0.6               ,
-        conceit       >= 0.4.0.0           
+        base          >= 4        && < 5   
+      , bytestring    >= 0.9.2.1           
+      , text          >= 0.11.2.0          
+      , transformers  >= 0.4.0.0           
+      , bifunctors    >= 5.0               
+      , foldl         >= 1.2.0             
+      , free          >= 4.0               
+      , pipes         == 4.*               
+      , pipes-concurrency   >= 2.0.2       
+      , pipes-group   >= 1.0.1             
+      , pipes-parse                        
+      , pipes-safe                         
+      , pipes-text    >= 0.0.1.0           
+      , pipes-bytestring                   
+      , void          >= 0.6               
+      , conceit       >= 0.4.0.0           
+      , microlens     >= 0.4.2.0
     Exposed-Modules:
         Pipes.Transduce
         Pipes.Transduce.ByteString
diff --git a/src/Pipes/Transduce.hs b/src/Pipes/Transduce.hs
--- a/src/Pipes/Transduce.hs
+++ b/src/Pipes/Transduce.hs
@@ -73,7 +73,6 @@
 import Data.Monoid hiding (First)
 import Data.Void
 import Data.Foldable
-import Data.Functor.Constant
 import Control.Applicative
 import Control.Applicative.Lift
 import Control.Monad
@@ -92,6 +91,7 @@
 import Pipes.Concurrent
 import Pipes.Safe (SafeT, runSafeT)
 
+import Lens.Micro
 
 {- $setup
 >>> :set -XOverloadedStrings
@@ -672,17 +672,4 @@
         -- the P.drain bit was difficult to figure out!!!
         withMVar mvar $ \output -> do
             runEffect $ textProducer >-> (toOutput output >> Pipes.drain)
-
--- Lens stuff
-type LensLike f a a' b b' = (b -> f b') -> a -> f a'
-
-folding :: (Foldable g, PhantomX f, Applicative f) => (a -> g b) -> LensLike f a a' b b'
-folding p f = coerce . traverse_ f . p
-{-# INLINE folding #-}
-
-class Functor f => PhantomX f where
-    coerce :: f a -> f b
-
-instance PhantomX (Constant a) where
-    coerce (Constant x) = (Constant x)
 
