diff --git a/ascii-string.cabal b/ascii-string.cabal
--- a/ascii-string.cabal
+++ b/ascii-string.cabal
@@ -1,38 +1,23 @@
-name:
-  ascii-string
-version:
-  1.0.1
-synopsis:
-  Compact representation of ASCII strings
+name: ascii-string
+version: 1.0.1.1
+synopsis: Compact representation of ASCII strings
 description:
   ASCII strings stored using just 7 bits per character.
   Compared to ByteString, this saves you a whole byte per 8 characters.
-homepage:
-  https://github.com/metrix-ai/ascii-string 
-bug-reports:
-  https://github.com/metrix-ai/ascii-string/issues 
-author:
-  Nikita Volkov <nikita.y.volkov@mail.ru>
-maintainer:
-  Metrix.AI Tech Team <tech@metrix.ai>
-copyright:
-  (c) 2018, Metrix.AI
-license:
-  MIT
-license-file:
-  LICENSE
-build-type:
-  Simple
-cabal-version:
-  >=1.10
+homepage: https://github.com/metrix-ai/ascii-string
+bug-reports: https://github.com/metrix-ai/ascii-string/issues
+author: Nikita Volkov <nikita.y.volkov@mail.ru>
+maintainer: Metrix.AI Tech Team <tech@metrix.ai>
+copyright: (c) 2018, Metrix.AI
+license: MIT
+license-file: LICENSE
+build-type: Simple
+cabal-version: >=1.10
 
 library
-  hs-source-dirs:
-    library
-  default-extensions:
-    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
-  default-language:
-    Haskell2010
+  hs-source-dirs: library
+  default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+  default-language: Haskell2010
   exposed-modules:
     AsciiString
   other-modules:
@@ -43,21 +28,17 @@
     bytestring >=0.10 && <0.11,
     cereal >=0.5.5 && <0.6,
     deepseq >=1.4 && <2,
-    deferred-folds >=0.6.11 && <0.7,
+    deferred-folds >=0.7 && <0.8,
     foldl >=1.4 && <2,
     hashable >=1.2.7 && <2,
     primitive >=0.6.4 && <0.7,
-    primitive-extras >=0.6.3 && <0.7
+    primitive-extras >=0.7 && <0.8
 
 test-suite test
-  type:
-    exitcode-stdio-1.0
-  hs-source-dirs:
-    test
-  default-extensions:
-    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
-  default-language:
-    Haskell2010
+  type: exitcode-stdio-1.0
+  hs-source-dirs: test
+  default-extensions: Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+  default-language: Haskell2010
   main-is:
     Main.hs
   build-depends:
diff --git a/library/AsciiString.hs b/library/AsciiString.hs
--- a/library/AsciiString.hs
+++ b/library/AsciiString.hs
@@ -15,7 +15,7 @@
 import qualified Data.List as List
 import qualified Data.ByteString as ByteString
 import qualified Data.ByteString.Short.Internal as ShortByteString
-import qualified DeferredFolds.UnfoldM as UnfoldM
+import qualified DeferredFolds.UnfoldlM as UnfoldlM
 import qualified AsciiString.FoldMs as FoldMs
 import qualified Control.Foldl as Foldl
 import qualified PrimitiveExtras.PrimArray as PrimArray
@@ -62,30 +62,30 @@
 {-| Construct from a list of septets encoded in 'Word8', ignoring the 8th bit. -}
 fromSeptetList :: [Word8] -> AsciiString
 fromSeptetList list = 
-  fromUnfoldM (List.length list) (UnfoldM.foldable list)
+  fromUnfoldlM (List.length list) (UnfoldlM.foldable list)
 
 {-|
 Convert from ByteString, ignoring each 8th bit in it.
 -}
 fromByteString :: ByteString -> AsciiString
 fromByteString byteString = 
-  fromUnfoldM (ByteString.length byteString) (UnfoldM.byteStringBytes byteString)
+  fromUnfoldlM (ByteString.length byteString) (UnfoldlM.byteStringBytes byteString)
 
 {-|
 Convert from ShortByteString, ignoring each 8th bit in it.
 -}
 fromShortByteString :: ShortByteString -> AsciiString
 fromShortByteString byteString =
-  fromUnfoldM (ShortByteString.length byteString) (UnfoldM.shortByteStringBytes byteString)
+  fromUnfoldlM (ShortByteString.length byteString) (UnfoldlM.shortByteStringBytes byteString)
 
-{-# INLINE fromUnfoldM #-}
-fromUnfoldM :: Int -> UnfoldM IO Word8 -> AsciiString
-fromUnfoldM size unfoldM =
-  AsciiString size (unsafeDupablePerformIO (UnfoldM.foldM (FoldMs.sizedSeptetPrimArrayFromSeptets size) unfoldM))
+{-# INLINE fromUnfoldlM #-}
+fromUnfoldlM :: Int -> UnfoldlM IO Word8 -> AsciiString
+fromUnfoldlM size unfoldM =
+  AsciiString size (unsafeDupablePerformIO (UnfoldlM.foldM (FoldMs.sizedSeptetPrimArrayFromSeptets size) unfoldM))
 
 {-| Convert to a list of septets represented by 'Word8' with the 8th bit always empty. -}
 toSeptetList :: AsciiString -> [Word8]
-toSeptetList = unsafeDupablePerformIO . UnfoldM.foldM (Foldl.generalize Foldl.list) . toOctetUnfoldM
+toSeptetList = unsafeDupablePerformIO . UnfoldlM.foldM (Foldl.generalize Foldl.list) . toOctetUnfoldlM
 
 {-| Convert to bytestring. -}
 toByteString :: AsciiString -> ByteString
@@ -97,11 +97,11 @@
   primArraySBS :: PrimArray Word8 -> ShortByteString
   primArraySBS (PrimArray ba) = ShortByteString.SBS ba
 
-toOctetUnfoldM :: AsciiString -> UnfoldM IO Word8
-toOctetUnfoldM (AsciiString size pa) = let
+toOctetUnfoldlM :: AsciiString -> UnfoldlM IO Word8
+toOctetUnfoldlM (AsciiString size pa) = let
   takeLast = rem (7 * succ size) 8 /= 0
-  in UnfoldM.mapFoldMInput (FoldMs.overSeptets takeLast) (UnfoldM.primArray pa)
+  in UnfoldlM.mapFoldMInput (FoldMs.overSeptets takeLast) (UnfoldlM.primArray pa)
 
 runSizedFoldM :: (Int -> FoldM IO Word8 output) -> AsciiString -> IO output
 runSizedFoldM fold asciiString =
-  UnfoldM.foldM (fold (length asciiString)) (toOctetUnfoldM asciiString)
+  UnfoldlM.foldM (fold (length asciiString)) (toOctetUnfoldlM asciiString)
diff --git a/library/AsciiString/Prelude.hs b/library/AsciiString/Prelude.hs
--- a/library/AsciiString/Prelude.hs
+++ b/library/AsciiString/Prelude.hs
@@ -91,8 +91,9 @@
 
 -- deferred-folds
 -------------------------
-import DeferredFolds.Unfold as Exports (Unfold(..))
-import DeferredFolds.UnfoldM as Exports (UnfoldM(..))
+import DeferredFolds.Unfoldl as Exports (Unfoldl(..))
+import DeferredFolds.UnfoldlM as Exports (UnfoldlM(..))
+import DeferredFolds.Unfoldr as Exports (Unfoldr(..))
 
 -- hashable
 -------------------------
