diff --git a/crypto-conduit.cabal b/crypto-conduit.cabal
--- a/crypto-conduit.cabal
+++ b/crypto-conduit.cabal
@@ -1,6 +1,6 @@
 Cabal-version:       >= 1.8
 Name:                crypto-conduit
-Version:             0.4.3
+Version:             0.5.0
 Synopsis:            Conduit interface for cryptographic operations (from crypto-api).
 Homepage:            https://github.com/meteficha/crypto-conduit
 License:             BSD3
@@ -35,13 +35,13 @@
     base         >= 3   && < 5,
     bytestring   >= 0.9,
     cereal       >= 0.3 && < 0.4,
-    conduit      >= 0.5 && < 0.6,
+    conduit      >= 1.0 && < 1.1,
     transformers >= 0.2 && < 0.4
   if flag(old-crypto-api)
     Build-depends: crypto-api >= 0.8 && < 0.9
     CPP-options:   -DOLD_CRYPTO_API
   else
-    Build-depends: crypto-api >= 0.9 && < 0.11
+    Build-depends: crypto-api >= 0.9 && < 0.12
   GHC-options: -Wall
 
 Test-suite runtests
diff --git a/src/Crypto/Conduit.hs b/src/Crypto/Conduit.hs
--- a/src/Crypto/Conduit.hs
+++ b/src/Crypto/Conduit.hs
@@ -59,7 +59,7 @@
 import qualified Crypto.Types as C
 
 -- from conduit
-import Data.Conduit hiding (Source, Sink, Conduit, Pipe)
+import Data.Conduit
 import Data.Conduit.Binary (sourceFile)
 
 -- from transformers
@@ -77,7 +77,7 @@
 
 -- | A 'Sink' that hashes a stream of 'B.ByteString'@s@ and
 -- creates a digest @d@.
-sinkHash :: (Monad m, C.Hash ctx d) => GLSink B.ByteString m d
+sinkHash :: (Monad m, C.Hash ctx d) => Consumer B.ByteString m d
 sinkHash =
     self
   where
@@ -92,7 +92,7 @@
 
     blockSize = (C.blockLength .::. getType self) `div` 8
 
-getBlock :: Monad m => BlockMode -> C.ByteLength -> GLSink B.ByteString m Block
+getBlock :: Monad m => BlockMode -> C.ByteLength -> Consumer B.ByteString m Block
 getBlock blockMode blockSize =
     go id
   where
@@ -136,7 +136,7 @@
 #else
             C.MacKey ctx d
 #endif
-         -> GLSink B.ByteString m d
+         -> Consumer B.ByteString m d
 sinkHmac (C.MacKey key) =
       sink
   where
@@ -180,7 +180,7 @@
 -- avoid it if you don't know what you're doing.)
 conduitEncryptEcb :: (Monad m, C.BlockCipher k) =>
                      k -- ^ Cipher key.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitEncryptEcb k =
     blockCipherConduit k
       AnyMultiple
@@ -194,7 +194,7 @@
 -- the block size of the cipher and fails otherwise.
 conduitDecryptEcb :: (Monad m, C.BlockCipher k) =>
                      k -- ^ Cipher key.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitDecryptEcb k =
     blockCipherConduit k
       AnyMultiple
@@ -212,7 +212,7 @@
 conduitEncryptCbc :: (Monad m, C.BlockCipher k) =>
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitEncryptCbc k iv =
     blockCipherConduit k
       StrictBlockSize
@@ -228,7 +228,7 @@
 conduitDecryptCbc :: (Monad m, C.BlockCipher k) =>
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitDecryptCbc k iv =
     blockCipherConduit k
       StrictBlockSize
@@ -247,7 +247,7 @@
 conduitEncryptCfb :: (Monad m, C.BlockCipher k) =>
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitEncryptCfb k iv =
     blockCipherConduit k
       StrictBlockSize
@@ -263,7 +263,7 @@
 conduitDecryptCfb :: (Monad m, C.BlockCipher k) =>
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitDecryptCfb k iv =
     blockCipherConduit k
       StrictBlockSize
@@ -282,7 +282,7 @@
 conduitEncryptOfb :: (Monad m, C.BlockCipher k) =>
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitEncryptOfb k iv =
     blockCipherConduit k
       StrictBlockSize
@@ -297,7 +297,7 @@
 conduitDecryptOfb :: (Monad m, C.BlockCipher k) =>
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitDecryptOfb = conduitEncryptOfb
 
 
@@ -311,7 +311,7 @@
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
                   -> (C.IV k -> C.IV k) -- ^ Increment counter ('C.incIV' is recommended)
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitEncryptCtr k iv incIV =
     blockCipherConduit k
       StrictBlockSize
@@ -329,7 +329,7 @@
                      k      -- ^ Cipher key.
                   -> C.IV k -- ^ Initialization vector.
                   -> (C.IV k -> C.IV k) -- ^ Increment counter ('C.incIV' is recommended)
-                  -> GLInfConduit B.ByteString m B.ByteString
+                  -> Conduit B.ByteString m B.ByteString
 conduitDecryptCtr = conduitEncryptCtr
 
 
@@ -338,7 +338,7 @@
 sourceCtr :: (Monad m, C.BlockCipher k) =>
              k      -- ^ Cipher key.
           -> C.IV k -- ^ Initialization vector.
-          -> GSource m B.ByteString
+          -> Producer m B.ByteString
 sourceCtr k =
     loop
   where
@@ -360,7 +360,7 @@
 -- for variable-length messages.)
 sinkCbcMac :: (Monad m, C.BlockCipher k) =>
               k -- ^ Cipher key.
-           -> GLSink B.ByteString m B.ByteString
+           -> Consumer B.ByteString m B.ByteString
 sinkCbcMac k =
       go $ B.replicate blockSize 0
     where
@@ -390,10 +390,10 @@
 blocked :: Monad m =>
            BlockMode
         -> C.ByteLength -- ^ Block size
-        -> GInfConduit B.ByteString m Block
+        -> Conduit B.ByteString m Block
 blocked mode blockSize = go B.empty
     where
-      go x = awaitE >>= either (close x) (push x)
+      go x = await >>= maybe (close x) (push x)
 
       block = case mode of
                 StrictBlockSize -> blockStrict id
@@ -418,7 +418,7 @@
             (blks, rest) = block bs
             bs = append acc x
 
-      close acc r = yield (LastOne acc) >> return r
+      close acc = yield (LastOne acc)
 
 
 -- | How 'Block's should be returned, either with strictly the
@@ -439,7 +439,7 @@
                    -> s -- ^ Initial state.
                    -> (s -> B.ByteString -> (s, B.ByteString))        -- ^ Encrypt block.
                    -> (s -> B.ByteString -> m B.ByteString) -- ^ Final encryption.
-                   -> GLInfConduit B.ByteString m B.ByteString
+                   -> Conduit B.ByteString m B.ByteString
 blockCipherConduit key mode initialState apply final =
       go initialState
     where
@@ -456,7 +456,7 @@
                   | B.null input -> return () >> finish
                   | otherwise -> lift (final state input) >>= yield >> finish
 
-      finish = awaitE >>= either return (const finish)
+      finish = await >>= maybe (return ()) (const finish)
 
 -- | zipWith xor + pack
 --
