diff --git a/Control/Concurrent/SCC/Combinators.hs b/Control/Concurrent/SCC/Combinators.hs
--- a/Control/Concurrent/SCC/Combinators.hs
+++ b/Control/Concurrent/SCC/Combinators.hs
@@ -85,7 +85,7 @@
 
 import Control.Monad.Coroutine
 import Data.Monoid.Null (MonoidNull(null))
-import Data.Monoid.Factorial (FactorialMonoid, length, drop, map)
+import Data.Monoid.Factorial (FactorialMonoid, length, drop)
 
 import Control.Concurrent.SCC.Streams
 import Control.Concurrent.SCC.Types
diff --git a/Control/Concurrent/SCC/Streams.hs b/Control/Concurrent/SCC/Streams.hs
--- a/Control/Concurrent/SCC/Streams.hs
+++ b/Control/Concurrent/SCC/Streams.hs
@@ -81,7 +81,7 @@
 import Control.Monad (liftM, when, unless, foldM)
 import Data.Functor.Identity (Identity(..))
 import Data.Monoid (Monoid(mappend, mconcat, mempty), First(First, getFirst))
-import Data.Monoid.Factorial (FactorialMonoid, foldl, map, mapM, mapM_, span, primePrefix, splitPrimePrefix)
+import Data.Monoid.Factorial (FactorialMonoid, foldl, foldMap, mapM, mapM_, span, primePrefix, splitPrimePrefix)
 import Data.Monoid.Null (MonoidNull(null))
 import Data.Maybe (mapMaybe)
 import Data.List (mapAccumL)
@@ -342,7 +342,7 @@
 mapStream f source sink = loop
    where loop = readChunk source readAll
                 >>= \r-> case r
-                         of ResultPart chunk _ -> putChunk sink (map f chunk) >> loop
+                         of ResultPart chunk _ -> putChunk sink (foldMap f chunk) >> loop
                             FinalResult _ -> return ()  -- the last chunk must be empty
 
 -- | An equivalent of 'Data.List.map' that works on a 'Sink' instead of a list. The argument function is applied to
diff --git a/scc.cabal b/scc.cabal
--- a/scc.cabal
+++ b/scc.cabal
@@ -1,5 +1,5 @@
 Name:                scc
-Version:             0.8
+Version:             0.8.1
 Cabal-Version:       >= 1.10
 Build-Type:          Simple
 Synopsis:            Streaming component combinators
@@ -35,7 +35,7 @@
                      Control.Concurrent.SCC.Combinators, Control.Concurrent.SCC.Primitives, Control.Concurrent.SCC.XML,
                      Control.Concurrent.Configuration, Control.Concurrent.SCC.Configurable
   Build-Depends:     base < 5, containers, transformers >= 0.2 && < 0.4, bytestring < 1.0, text < 1.0,
-                     monoid-subclasses == 0.1.*, incremental-parser >= 0.2.2 && < 0.3,
+                     monoid-subclasses < 0.3, incremental-parser >= 0.2.2 && < 0.3,
                      monad-parallel, monad-coroutine == 0.8.*,
                      process, haskeline, parsec == 3.*
   GHC-options:       -threaded
@@ -51,7 +51,7 @@
                      Control.Concurrent.SCC.XML,
                      Control.Concurrent.Configuration, Control.Concurrent.SCC.Configurable
   Build-Depends:     base < 5, containers, transformers >= 0.2 && < 0.4, bytestring < 1.0, text < 1.0,
-                     monoid-subclasses == 0.1.*, incremental-parser >= 0.2.2 && < 0.3,
+                     monoid-subclasses < 0.3, incremental-parser >= 0.2.2 && < 0.3,
                      monad-parallel, monad-coroutine == 0.8.*,
                      QuickCheck >= 2 && < 3, test-framework >= 0.4.1, test-framework-quickcheck2
   GHC-options:       -threaded -fcontext-stack=30
@@ -68,7 +68,7 @@
                      Control.Concurrent.SCC.Combinators.Parallel, Control.Concurrent.SCC.Combinators.Sequential,
                      Control.Concurrent.SCC.Combinators, Control.Concurrent.SCC.Primitives, Control.Concurrent.SCC.XML
   Build-Depends:     base < 5, containers, transformers >= 0.2 && < 0.4, bytestring < 1.0, text < 1.0,
-                     monoid-subclasses == 0.1.*, incremental-parser >= 0.2.2 && < 0.3,
+                     monoid-subclasses < 0.3, incremental-parser >= 0.2.2 && < 0.3,
                      monad-parallel, monad-coroutine == 0.8.*
   GHC-prof-options:  -auto-all
   if impl(ghc >= 7.0.0)
