diff --git a/quiver.cabal b/quiver.cabal
--- a/quiver.cabal
+++ b/quiver.cabal
@@ -1,5 +1,5 @@
 name:           quiver
-version:        0.0.0.11
+version:        0.0.0.12
 synopsis:       Quiver finite stream processing library
 homepage:       https://github.com/zadarnowski/quiver
 category:       Control
@@ -15,7 +15,7 @@
     /Quiver/ is a powerful stream processing library for
     combinatorial and monadic representation of computations
     over both inductive and coinductive data streams.
-
+    .
     It is similar to Gabriel Gonzalez's /pipes/ and
     Michael Snoyman's /conduit/, but generalises both
     with support for functor-based computations and
@@ -35,12 +35,12 @@
 source-repository this
   type:         git
   location:     https://github.com/zadarnowski/quiver.git
-  tag:          0.0.0.11
+  tag:          0.0.0.12
 
 library
   hs-source-dirs:   src
   default-language: Haskell2010
-  ghc-options:      -Wall -fno-warn-unused-do-bind -fno-warn-missing-signatures
+  ghc-options:      -O2 -Wall -fno-warn-unused-do-bind -fno-warn-missing-signatures
 
   exposed-modules:
     Control.Quiver
diff --git a/src/Control/Quiver/SP.lhs b/src/Control/Quiver/SP.lhs
--- a/src/Control/Quiver/SP.lhs
+++ b/src/Control/Quiver/SP.lhs
@@ -22,6 +22,7 @@
 >   spfetch, spemit, (>:>), (>>!),
 >   sppure, spid, spconcat,
 >   spfold, spfold', spfoldl, spfoldl', spfoldr, spfoldr',
+>   sptraverse, sptraverse_,
 > ) where
 
 > import Control.Quiver
@@ -169,3 +170,19 @@
 >  where
 >   cloop r = r `seq` consume () (cloop . flip f r) (deliver r)
 
+> -- | A processor that applies a monadic function to every input
+> --   element and emits the resulting value.
+
+> sptraverse :: Monad m => (a -> m b) -> SP a b m e
+> sptraverse k = loop
+>  where
+>   loop = consume () loop' (deliver SPComplete)
+>   loop' x = qlift (k x) >>= (>:> loop)
+
+> -- | A processor that consumes every input elemnet using a monadic function.
+
+> sptraverse_ :: Monad m => (a -> m ()) -> SP a b m e
+> sptraverse_ k = loop
+>  where
+>   loop = consume () loop' (deliver SPComplete)
+>   loop' x = qlift (k x) >> loop
