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.0
+version:	0.0.0.1
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -87,11 +87,11 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/forest.git
-    tag:	simple-pipe-0.0.0.0
+    tag:	simple-pipe-0.0.0.1
 
 library
     hs-source-dirs:	src
-    exposed-modules:	Data.Pipe
+    exposed-modules:	Data.Pipe, Data.Pipe.List
     build-depends:
         base == 4.*, monad-control == 0.3.*, lifted-base == 0.2.*,
         monads-tf == 0.1.*
diff --git a/src/Data/Pipe/List.hs b/src/Data/Pipe/List.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Pipe/List.hs
@@ -0,0 +1,21 @@
+module Data.Pipe.List (
+	fromList,
+	toList,
+	) where
+
+import Control.Applicative
+import Data.Pipe
+
+fromList :: Monad m => [a] -> Pipe () a m ()
+fromList [] = return ()
+fromList (x : xs) = yield x >> fromList xs
+
+-- | Consume all values from the stream and return as a list.
+-- This will pull all values into memory.
+
+toList :: Monad m => Pipe a () m [a]
+toList = do
+	mx <- await
+	case mx of
+		Just x -> (x :) <$> toList
+		_ -> return []
