diff --git a/hist-pl.cabal b/hist-pl.cabal
--- a/hist-pl.cabal
+++ b/hist-pl.cabal
@@ -1,5 +1,5 @@
 name:               hist-pl
-version:            0.3.1
+version:            0.3.2
 synopsis:           Umbrella package for the historical dictionary of Polish
 description:
     The package provides a tool for creating and searching the
@@ -34,10 +34,10 @@
                     , cmdargs
                     , bytestring
                     , aeson-pretty >= 0.7 && < 0.8
-                    , pipes >= 3.3 && < 3.4
+                    , pipes >= 4.0 && < 4.1
                     , polimorf >= 0.7.1 && < 0.8
-                    , hist-pl-lexicon >= 0.6 && < 0.7
-                    , hist-pl-fusion >= 0.5 && < 0.6
+                    , hist-pl-lexicon >= 0.6.1 && < 0.7
+                    , hist-pl-fusion >= 0.5.3 && < 0.6
                     , hist-pl-dawg >= 0.2 && < 0.3
                     , hist-pl-lmf >= 0.1 && < 0.2
 
diff --git a/tools/hist-pl.hs b/tools/hist-pl.hs
--- a/tools/hist-pl.hs
+++ b/tools/hist-pl.hs
@@ -5,8 +5,8 @@
 
 
 import           Control.Applicative ((<$>))
-import           Control.Monad (void, forM_, (<=<))
-import           Control.Proxy
+import           Control.Monad (forever, void, forM_, (<=<))
+import           Pipes
 import           System.Console.CmdArgs
 import qualified Data.Set as S
 import qualified Data.Map as M
@@ -108,7 +108,7 @@
     -- putStrLn "Reading historical dictionary of Polish..."
     hist <- LMF.readLMF lmfPath
     -- putStrLn "Creating the binary version of the dictionary..."
-    runProxy $ fromListI (addForms poli hist) >-> H.save outPath
+    runEffect $ fromListI (addForms poli hist) >-> H.save outPath
   where
     addForms poli hist =
         [ ( lexEntry
@@ -122,7 +122,7 @@
 
 exec Print{..} = do
     hpl <- H.open binPath
-    runProxy $ H.load hpl >-> mapMD (L.putStrLn . LMF.showLexEntry . snd)
+    runEffect $ for (H.load hpl) (lift . L.putStrLn . LMF.showLexEntry . snd)
 
 
 exec Analyse{..} = do
@@ -153,7 +153,7 @@
 ---------------------------------------
 
 
-fromListI :: (Monad m, Proxy p) => [a] -> () -> Producer p (Maybe a) m r
-fromListI xs () = runIdentityP $ do
-    mapM_ (respond . Just) xs
-    forever $ respond Nothing
+fromListI :: (Monad m) => [a] -> Producer (Maybe a) m r
+fromListI xs = do
+    mapM_ (yield . Just) xs
+    forever $ yield Nothing
