diff --git a/deferred-folds.cabal b/deferred-folds.cabal
--- a/deferred-folds.cabal
+++ b/deferred-folds.cabal
@@ -1,5 +1,5 @@
 name: deferred-folds
-version: 0.9
+version: 0.9.1
 category: Folding
 synopsis: Abstractions over deferred folds
 description:
diff --git a/library/DeferredFolds/Defs/Unfoldr.hs b/library/DeferredFolds/Defs/Unfoldr.hs
--- a/library/DeferredFolds/Defs/Unfoldr.hs
+++ b/library/DeferredFolds/Defs/Unfoldr.hs
@@ -68,17 +68,17 @@
 filter :: (a -> Bool) -> Unfoldr a -> Unfoldr a
 filter test (Unfoldr run) = Unfoldr (\ step -> run (\ element state -> if test element then step element state else state))
 
-{-| Ascending infinite stream of ints starting from the one specified -}
-{-# INLINE intsFrom #-}
-intsFrom :: Int -> Unfoldr Int
-intsFrom from = Unfoldr $ \ step init -> let
+{-| Ascending infinite stream of enums starting from the one specified -}
+{-# INLINE enumsFrom #-}
+enumsFrom :: (Enum a) => a -> Unfoldr a
+enumsFrom from = Unfoldr $ \ step init -> let
   loop int = step int (loop (succ int))
   in loop from
 
-{-| Ints in the specified inclusive range -}
-{-# INLINE intsInRange #-}
-intsInRange :: Int -> Int -> Unfoldr Int
-intsInRange from to =
+{-| Enums in the specified inclusive range -}
+{-# INLINE enumsInRange #-}
+enumsInRange :: (Enum a, Ord a) => a -> a -> Unfoldr a
+enumsInRange from to =
   Unfoldr $ \ step init ->
   let
     loop int =
@@ -87,6 +87,16 @@
         else init
     in loop from
 
+{-| Ascending infinite stream of ints starting from the one specified -}
+{-# INLINE intsFrom #-}
+intsFrom :: Int -> Unfoldr Int
+intsFrom = enumsFrom
+
+{-| Ints in the specified inclusive range -}
+{-# INLINE intsInRange #-}
+intsInRange :: Int -> Int -> Unfoldr Int
+intsInRange = enumsInRange
+
 {-| Associations of a map -}
 {-# INLINE mapAssocs #-}
 mapAssocs :: Map key value -> Unfoldr (key, value)
@@ -125,32 +135,73 @@
   in loop 0
 
 {-|
-Extract individual digits of a non-negative integral number.
+Binary digits of a non-negative integral number.
 -}
+binaryDigits :: Integral a => a -> Unfoldr a
+binaryDigits = reverse . reverseBinaryDigits
+
+{-|
+Binary digits of a non-negative integral number in reverse order.
+-}
+reverseBinaryDigits :: Integral a => a -> Unfoldr a
+reverseBinaryDigits = reverseDigits 2
+
+{-|
+Octal digits of a non-negative integral number.
+-}
+octalDigits :: Integral a => a -> Unfoldr a
+octalDigits = reverse . reverseOctalDigits
+
+{-|
+Octal digits of a non-negative integral number in reverse order.
+-}
+reverseOctalDigits :: Integral a => a -> Unfoldr a
+reverseOctalDigits = reverseDigits 8
+
+{-|
+Decimal digits of a non-negative integral number.
+-}
 decimalDigits :: Integral a => a -> Unfoldr a
 decimalDigits = reverse . reverseDecimalDigits
 
 {-|
-Extract individual digits of a non-negative integral number in reverse order.
-More efficient than 'digits'.
+Decimal digits of a non-negative integral number in reverse order.
+More efficient than 'decimalDigits'.
 -}
 reverseDecimalDigits :: Integral a => a -> Unfoldr a
 reverseDecimalDigits = reverseDigits 10
 
+{-|
+Hexadecimal digits of a non-negative number.
+-}
 hexadecimalDigits :: Integral a => a -> Unfoldr a
 hexadecimalDigits = reverse . reverseHexadecimalDigits
 
+{-|
+Hexadecimal digits of a non-negative number in reverse order.
+-}
 reverseHexadecimalDigits :: Integral a => a -> Unfoldr a
 reverseHexadecimalDigits = reverseDigits 16
 
-reverseDigits :: Integral a => a -> a -> Unfoldr a
+{-|
+Digits of a non-negative number in numeral system based on the specified radix.
+The digits come in reverse order.
+
+E.g., here's how an unfold of binary digits in proper order looks:
+
+@
+binaryDigits :: Integral a => a -> Unfoldr a
+binaryDigits = 'reverse' . 'reverseDigits' 2
+@
+-}
+reverseDigits :: Integral a => a {-^ Radix -} -> a {-^ Number -} -> Unfoldr a
 reverseDigits radix x = Unfoldr $ \ step init -> let
   loop x = case divMod x radix of
     (next, digit) -> step digit (if next <= 0 then init else loop next)
   in loop x
 
 {-|
-Reverse the order
+Reverse the order.
 
 Use with care, because it requires to allocate all elements.
 -}
