diff --git a/int-multimap.cabal b/int-multimap.cabal
--- a/int-multimap.cabal
+++ b/int-multimap.cabal
@@ -1,7 +1,7 @@
 name:
   int-multimap
 version:
-  0.3
+  0.3.1
 synopsis:
   A data structure that associates each Int key with a set of values
 category:
diff --git a/library/IntMultimap.hs b/library/IntMultimap.hs
--- a/library/IntMultimap.hs
+++ b/library/IntMultimap.hs
@@ -13,6 +13,9 @@
   -- * Transformations
   map,
 
+  -- * Folds
+  foldlWithKey',
+
   -- * Basic interface
   null,
   size,
@@ -119,6 +122,12 @@
 
 keys  :: IntMultimap a -> [Int]
 keys (IntMultimap intMap) = A.keys intMap
+
+{--------------------------------------------------------------------
+  Fold
+--------------------------------------------------------------------}
+foldlWithKey' :: (Int -> a -> b -> a) -> a -> IntMultimap b -> a
+foldlWithKey' f v (IntMultimap intMap) = A.foldlWithKey' (\a k set -> B.foldl' (f k) a set) v intMap
 
 {--------------------------------------------------------------------
   Filter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -73,6 +73,11 @@
     ,
     testProperty "Mapping" $ \ (list :: [(Int, Int)]) ->
     (B.fromList $ map testFuncL list) === (B.fromList $ A.toList $ A.map testFunc $ A.fromList list)
+    -- ,
+    -- testProperty "foldl" $ \ (list :: [(Int, Int)], fun :: (Fun Int Int Int Int), zero :: Int) ->
+    -- let intMap = A.fromList list
+    --     f = applyFun fun
+    -- in A.foldlWithKey' f zero intMap === zero
   ]
 
 testFunc :: (Show a) => a -> String
