diff --git a/library/StmContainers/Bimap.hs b/library/StmContainers/Bimap.hs
--- a/library/StmContainers/Bimap.hs
+++ b/library/StmContainers/Bimap.hs
@@ -15,6 +15,7 @@
   deleteRight,
   reset,
   unfoldM,
+  listT,
 )
 where
 
@@ -156,10 +157,17 @@
     A.reset rightMap
 
 -- |
--- Stream associations.
+-- Stream associations actively.
 -- 
 -- Amongst other features this function provides an interface to folding.
 {-# INLINE unfoldM #-}
 unfoldM :: Bimap leftKey rightKey -> UnfoldM STM (leftKey, rightKey)
 unfoldM (Bimap leftMap rightMap) =
   A.unfoldM leftMap
+
+-- |
+-- Stream the associations passively.
+{-# INLINE listT #-}
+listT :: Bimap key value -> ListT STM (key, value)
+listT (Bimap leftMap _) =
+  A.listT leftMap
diff --git a/library/StmContainers/Map.hs b/library/StmContainers/Map.hs
--- a/library/StmContainers/Map.hs
+++ b/library/StmContainers/Map.hs
@@ -11,6 +11,7 @@
   delete,
   reset,
   unfoldM,
+  listT,
 )
 where
 
@@ -99,10 +100,17 @@
   A.reset hamt
 
 -- |
--- Stream the associations.
+-- Stream the associations actively.
 -- 
 -- Amongst other features this function provides an interface to folding.
 {-# INLINABLE unfoldM #-}
 unfoldM :: Map key value -> UnfoldM STM (key, value)
 unfoldM (Map hamt) =
-  fmap (\(Product2 k v) -> (k, v)) (A.unfoldM hamt)
+  fmap (\ (Product2 k v) -> (k, v)) (A.unfoldM hamt)
+
+-- |
+-- Stream the associations passively.
+{-# INLINE listT #-}
+listT :: Map key value -> ListT STM (key, value)
+listT (Map hamt) =
+  fmap (\ (Product2 k v) -> (k, v)) (A.listT hamt)
diff --git a/library/StmContainers/Multimap.hs b/library/StmContainers/Multimap.hs
--- a/library/StmContainers/Multimap.hs
+++ b/library/StmContainers/Multimap.hs
@@ -14,6 +14,9 @@
   unfoldM,
   unfoldMKeys,
   unfoldMByKey,
+  listT,
+  listTKeys,
+  listTByKey,
 )
 where
 
@@ -137,7 +140,7 @@
   A.reset map
 
 -- |
--- Stream associations.
+-- Stream associations actively.
 --
 -- Amongst other features this function provides an interface to folding.
 unfoldM :: Multimap key value -> UnfoldM STM (key, value)
@@ -145,13 +148,31 @@
   A.unfoldM m >>= \(key, s) -> (key,) <$> B.unfoldM s
 
 -- |
--- Stream keys.
+-- Stream keys actively.
 unfoldMKeys :: Multimap key value -> UnfoldM STM key
 unfoldMKeys (Multimap m) =
   fmap fst (A.unfoldM m)
 
 -- |
--- Stream values by a key.
+-- Stream values by a key actively.
 unfoldMByKey :: (Eq key, Hashable key) => key -> Multimap key value -> UnfoldM STM value
 unfoldMByKey key (Multimap m) =
   lift (A.lookup key m) >>= maybe mempty B.unfoldM
+
+-- |
+-- Stream associations passively.
+listT :: Multimap key value -> ListT STM (key, value)
+listT (Multimap m) =
+  A.listT m >>= \(key, s) -> (key,) <$> B.listT s
+
+-- |
+-- Stream keys passively.
+listTKeys :: Multimap key value -> ListT STM key
+listTKeys (Multimap m) =
+  fmap fst (A.listT m)
+
+-- |
+-- Stream values by a key passively.
+listTByKey :: (Eq key, Hashable key) => key -> Multimap key value -> ListT STM value
+listTByKey key (Multimap m) =
+  lift (A.lookup key m) >>= maybe mempty B.listT
diff --git a/library/StmContainers/Prelude.hs b/library/StmContainers/Prelude.hs
--- a/library/StmContainers/Prelude.hs
+++ b/library/StmContainers/Prelude.hs
@@ -87,6 +87,10 @@
 import DeferredFolds.Unfold as Exports (Unfold(..))
 import DeferredFolds.UnfoldM as Exports (UnfoldM(..))
 
+-- list-t
+-------------------------
+import ListT as Exports (ListT(..))
+
 -- | Strict version of 'modifyTVar'.
 {-# INLINE modifyTVar' #-}
 modifyTVar' :: TVar a -> (a -> a) -> STM ()
diff --git a/library/StmContainers/Set.hs b/library/StmContainers/Set.hs
--- a/library/StmContainers/Set.hs
+++ b/library/StmContainers/Set.hs
@@ -11,6 +11,7 @@
   delete,
   reset,
   unfoldM,
+  listT,
 )
 where
 
@@ -101,10 +102,17 @@
   A.reset hamt
 
 -- |
--- Stream elements.
+-- Stream the elements actively.
 -- 
 -- Amongst other features this function provides an interface to folding.
 {-# INLINABLE unfoldM #-}
 unfoldM :: Set item -> UnfoldM STM item
 unfoldM (Set hamt) =
   A.unfoldM hamt
+
+-- |
+-- Stream the elements passively.
+{-# INLINE listT #-}
+listT :: Set item -> ListT STM item
+listT (Set hamt) =
+  A.listT hamt
diff --git a/stm-containers.cabal b/stm-containers.cabal
--- a/stm-containers.cabal
+++ b/stm-containers.cabal
@@ -1,7 +1,7 @@
 name:
   stm-containers
 version:
-  1.0.0.1
+  1.0.1
 synopsis:
   Containers for STM
 description:
@@ -60,7 +60,8 @@
     deferred-folds >=0.6.6 && <0.7,
     focus >=1 && <1.1,
     hashable <2,
-    stm-hamt >=1.1 && <1.2,
+    list-t >=1.0.1 && <1.1,
+    stm-hamt >=1.1.2 && <1.2,
     transformers >=0.5 && <0.6
 
 test-suite test
