diff --git a/Data/GroupedList.hs b/Data/GroupedList.hs
--- a/Data/GroupedList.hs
+++ b/Data/GroupedList.hs
@@ -62,7 +62,7 @@
     )
 import qualified Prelude as Prelude
 import Data.Pointed
-import Data.Foldable (Foldable (..), toList, foldrM)
+import Data.Foldable (Foldable (..), toList)
 import Data.List (group)
 import Data.Sequence (Seq)
 import qualified Data.Sequence as S
@@ -71,6 +71,7 @@
 import Control.Arrow (second)
 import qualified Data.Map.Strict as M
 import Data.Functor.Identity (Identity (..))
+import Control.Monad (foldM)
 
 ------------------------------------------------------------------
 ------------------------------------------------------------------
@@ -467,9 +468,9 @@
    -> acc -- ^ Initial value of the accumulator.
    -> Grouped a
    -> m (acc, Grouped b)
-traverseGroupedByGroupAccum f acc0 (Grouped gs) = foldrM go (acc0, mempty) gs
+traverseGroupedByGroupAccum f acc0 (Grouped gs) = foldM go (acc0, mempty) gs
   where
-    go g (acc, gd) = second (<> gd) <$> f acc g
+    go (acc, gd) g = second (gd <>) <$> f acc g
 
 ------------------------------------------------------------------
 ------------------------------------------------------------------
diff --git a/grouped-list.cabal b/grouped-list.cabal
--- a/grouped-list.cabal
+++ b/grouped-list.cabal
@@ -1,5 +1,5 @@
 name:                grouped-list
-version:             0.2.1.0
+version:             0.2.1.1
 synopsis:            Grouped lists. Equal consecutive elements are grouped.
 description:
   Grouped lists work like regular lists, except for two conditions:
@@ -30,7 +30,7 @@
   default-language: Haskell2010
   exposed-modules: Data.GroupedList
   build-depends:
-      base >= 4.7 && < 4.9
+      base >= 4.8 && < 4.9
     , containers
     , pointed
     , deepseq
diff --git a/test/examples.hs b/test/examples.hs
--- a/test/examples.hs
+++ b/test/examples.hs
@@ -7,6 +7,7 @@
 import Data.GroupedList (Grouped)
 import qualified Data.GroupedList as GL
 import Control.Monad (unless)
+import Data.Functor.Identity
 
 (=:) :: (Show a, Eq a) => a -> a -> IO ()
 x =: y = unless (x == y) $ do
@@ -59,3 +60,5 @@
     =: [1,2,3,3]
   GL.zipWith (+) [1,2,1,1] [2,1,1,2]
     =: [3,3,2,3]
+  runIdentity (fmap snd $ GL.traverseGroupedByGroupAccum (\acc g -> Identity (acc+1, GL.map (+acc) $ GL.fromGroup g)) 0 [1,2,3,3,4])
+    =: [1,3,5,5,7]
