diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: sandi
-version: 0.4.3
+version: 0.5
 synopsis: Data encoding library
 description: >-
   Reasonably fast data encoding library.
@@ -8,7 +8,6 @@
 category: Codec, Conduit
 extra-source-files:
   - package.yaml
-  - stack.yaml
   - csrc/*.h
 
 git: https://github.com/magthe/sandi.git
diff --git a/sandi.cabal b/sandi.cabal
--- a/sandi.cabal
+++ b/sandi.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.1.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: b6fde5150c1c8249cec6fdf64ed9a323c10cd14436db56c5d5f8b29a1d26a4bf
+-- hash: 6183f2dd5fde1b5f89e8c5599ef0b4457280d17a3b0126ef21c0f541cc780473
 
 name:           sandi
-version:        0.4.3
+version:        0.5
 synopsis:       Data encoding library
 description:    Reasonably fast data encoding library.
 category:       Codec, Conduit
@@ -13,11 +15,9 @@
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
-    csrc/codec.h
     package.yaml
-    stack.yaml
+    csrc/codec.h
 
 source-repository head
   type: git
diff --git a/src/Data/Conduit/Codec/Base16.hs b/src/Data/Conduit/Codec/Base16.hs
--- a/src/Data/Conduit/Codec/Base16.hs
+++ b/src/Data/Conduit/Codec/Base16.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeII B16.encode
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeII B16.b16Dec empty
diff --git a/src/Data/Conduit/Codec/Base32.hs b/src/Data/Conduit/Codec/Base32.hs
--- a/src/Data/Conduit/Codec/Base32.hs
+++ b/src/Data/Conduit/Codec/Base32.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI B32.b32EncodePart B32.b32EncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI B32.b32DecodePart B32.b32DecodeFinal empty
diff --git a/src/Data/Conduit/Codec/Base32Hex.hs b/src/Data/Conduit/Codec/Base32Hex.hs
--- a/src/Data/Conduit/Codec/Base32Hex.hs
+++ b/src/Data/Conduit/Codec/Base32Hex.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI B32H.b32hEncodePart B32H.b32hEncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI B32H.b32hDecodePart B32H.b32hDecodeFinal empty
diff --git a/src/Data/Conduit/Codec/Base64.hs b/src/Data/Conduit/Codec/Base64.hs
--- a/src/Data/Conduit/Codec/Base64.hs
+++ b/src/Data/Conduit/Codec/Base64.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI B64.b64EncodePart B64.b64EncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI B64.b64DecodePart B64.b64DecodeFinal empty
diff --git a/src/Data/Conduit/Codec/Base64Url.hs b/src/Data/Conduit/Codec/Base64Url.hs
--- a/src/Data/Conduit/Codec/Base64Url.hs
+++ b/src/Data/Conduit/Codec/Base64Url.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI B64U.b64uEncodePart B64U.b64uEncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI B64U.b64uDecodePart B64U.b64uDecodeFinal empty
diff --git a/src/Data/Conduit/Codec/Base85.hs b/src/Data/Conduit/Codec/Base85.hs
--- a/src/Data/Conduit/Codec/Base85.hs
+++ b/src/Data/Conduit/Codec/Base85.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI B85.b85EncodePart B85.b85EncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI B85.b85DecodePart B85.b85DecodeFinal empty
diff --git a/src/Data/Conduit/Codec/QuotedPrintable.hs b/src/Data/Conduit/Codec/QuotedPrintable.hs
--- a/src/Data/Conduit/Codec/QuotedPrintable.hs
+++ b/src/Data/Conduit/Codec/QuotedPrintable.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeII Qp.encode
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeII Qp.qpDecode empty
diff --git a/src/Data/Conduit/Codec/Util.hs b/src/Data/Conduit/Codec/Util.hs
--- a/src/Data/Conduit/Codec/Util.hs
+++ b/src/Data/Conduit/Codec/Util.hs
@@ -15,7 +15,7 @@
 import Data.Typeable (Typeable)
 import Control.Exception (Exception)
 import Data.ByteString as BS (ByteString, append, null)
-import Data.Conduit (Conduit, await, yield)
+import Data.Conduit (ConduitT, await, yield)
 import Data.Maybe (fromJust)
 import Control.Monad (unless, void)
 import Control.Monad.Catch (MonadThrow, throwM)
@@ -31,7 +31,7 @@
 
 instance Exception CodecDecodeException
 
-encodeI :: (Monad m) => EncFuncPart -> EncFuncFinal -> ByteString -> Conduit ByteString m ByteString
+encodeI :: (Monad m) => EncFuncPart -> EncFuncFinal -> ByteString -> ConduitT ByteString ByteString m ()
 encodeI enc_part enc_final i = do
     clear <- await
     case clear of
@@ -42,7 +42,7 @@
                 unless (BS.null a) $ yield a
                 encodeI enc_part enc_final b
 
-decodeI :: (Monad m, MonadThrow m) => DecFunc -> DecFuncFinal -> ByteString -> Conduit ByteString m ByteString
+decodeI :: (Monad m, MonadThrow m) => DecFunc -> DecFuncFinal -> ByteString -> ConduitT ByteString ByteString m ()
 decodeI dec_part dec_final i = do
     enc <- await
     case enc of
@@ -59,7 +59,7 @@
                     unless (BS.null a) $ yield a
                     decodeI dec_part dec_final b
 
-encodeII :: (Monad m) => EncFunc -> Conduit ByteString m ByteString
+encodeII :: (Monad m) => EncFunc -> ConduitT ByteString ByteString m ()
 encodeII enc = do
     clear <- await
     case clear of
@@ -68,7 +68,7 @@
             yield $ enc s
             encodeII enc
 
-decodeII :: (Monad m, MonadThrow m) => DecFunc -> ByteString -> Conduit ByteString m ByteString
+decodeII :: (Monad m, MonadThrow m) => DecFunc -> ByteString -> ConduitT ByteString ByteString m ()
 decodeII dec i = do
     enc <- await
     case enc of
diff --git a/src/Data/Conduit/Codec/Uu.hs b/src/Data/Conduit/Codec/Uu.hs
--- a/src/Data/Conduit/Codec/Uu.hs
+++ b/src/Data/Conduit/Codec/Uu.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI Uu.uuEncodePart Uu.uuEncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI Uu.uuDecodePart Uu.uuDecodeFinal empty
diff --git a/src/Data/Conduit/Codec/Xx.hs b/src/Data/Conduit/Codec/Xx.hs
--- a/src/Data/Conduit/Codec/Xx.hs
+++ b/src/Data/Conduit/Codec/Xx.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeI Xx.xxEncodePart Xx.xxEncodeFinal empty
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeI Xx.xxDecodePart Xx.xxDecodeFinal empty
diff --git a/src/Data/Conduit/Codec/Yenc.hs b/src/Data/Conduit/Codec/Yenc.hs
--- a/src/Data/Conduit/Codec/Yenc.hs
+++ b/src/Data/Conduit/Codec/Yenc.hs
@@ -9,10 +9,10 @@
 
 import Control.Monad.Catch (MonadThrow)
 import Data.ByteString (ByteString, empty)
-import Data.Conduit (Conduit)
+import Data.Conduit (ConduitT)
 
-encode :: (Monad m) => Conduit ByteString m ByteString
+encode :: (Monad m) => ConduitT ByteString ByteString m ()
 encode = U.encodeII Y.encode
 
-decode :: (Monad m, MonadThrow m) => Conduit ByteString m ByteString
+decode :: (Monad m, MonadThrow m) => ConduitT ByteString ByteString m ()
 decode = U.decodeII Y.yDecode empty
diff --git a/stack.yaml b/stack.yaml
deleted file mode 100644
--- a/stack.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-resolver: lts-12.16
-
-packages:
-  - '.'
-
-extra-deps: []
-
-flags: {}
-
-extra-package-dbs: []
