diff --git a/simple-pipe.cabal b/simple-pipe.cabal
--- a/simple-pipe.cabal
+++ b/simple-pipe.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.8
 
 name:		simple-pipe
-version:	0.0.0.11
+version:	0.0.0.12
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -87,12 +87,13 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/simple-pipe.git
-    tag:	simple-pipe-0.0.0.11
+    tag:	simple-pipe-0.0.0.12
 
 library
     hs-source-dirs:	src
     exposed-modules:
-        Data.Pipe, Data.Pipe.List, Data.Pipe.IO, Data.Pipe.ByteString
+        Data.Pipe,
+        Data.Pipe.Basic, Data.Pipe.List, Data.Pipe.IO, Data.Pipe.ByteString
     build-depends:
         base == 4.*, monad-control == 0.3.*, lifted-base == 0.2.*,
         monads-tf == 0.1.*, bytestring == 0.10.*
diff --git a/src/Data/Pipe/Basic.hs b/src/Data/Pipe/Basic.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Pipe/Basic.hs
@@ -0,0 +1,6 @@
+module Data.Pipe.Basic (convert) where
+
+import Data.Pipe
+
+convert :: Monad m => (a -> b) -> Pipe a b m ()
+convert f = await >>= maybe (return ()) ((>> convert f) . yield . f)
