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.3
+version:	0.0.0.4
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -87,7 +87,7 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/forest.git
-    tag:	simple-pipe-0.0.0.3
+    tag:	simple-pipe-0.0.0.4
 
 library
     hs-source-dirs:	src
diff --git a/src/Data/Pipe.hs b/src/Data/Pipe.hs
--- a/src/Data/Pipe.hs
+++ b/src/Data/Pipe.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE FlexibleContexts, RankNTypes, PackageImports #-}
 
 module Data.Pipe (
-	PipeClass(..), Pipe, runPipe, finalize, finally, bracket ) where
+	PipeClass(..), Pipe, runPipe, onBreak, finalize, finally, bracket ) where
 
 import Control.Applicative
 import Control.Monad
@@ -74,11 +74,17 @@
 	h <- liftP o
 	p h `finally` (c h >> return ())
 
+onBreak :: Monad m => Pipe i o m r -> m b -> Pipe i o m r
+onBreak (Ready f0 o p) f = Ready (f0 >> f >> return ()) o $ onBreak p f
+onBreak (Need f0 n) f = Need (f0 >> f >> return ()) $ \i -> onBreak (n i) f
+onBreak (Done f0 r) _ = Done f0 r
+onBreak (Make f0 m) f = Make (f0 >> f >> return ()) $ flip onBreak f `liftM` m
+
 finalize :: Monad m => Pipe i o m r -> m b -> Pipe i o m r
-finalize (Ready _ o p) f = Ready (f >> return ()) o $ finalize p f
-finalize (Need _ n) f = Need (f >> return ()) $ \i -> finalize (n i) f
-finalize (Done _ r) f = Done (f >> return ()) r
-finalize (Make _ m) f = Make (f >> return ()) $ flip finalize f `liftM` m
+finalize (Ready f0 o p) f = Ready (f0 >> f >> return ()) o $ finalize p f
+finalize (Need f0 n) f = Need (f0 >> f >> return ()) $ \i -> finalize (n i) f
+finalize (Done f0 r) f = Done (f0 >> f >> return ()) r
+finalize (Make f0 m) f = Make (f0 >> f >> return ()) $ flip finalize f `liftM` m
 
 finally :: MonadBaseControl IO m => Pipe i o m r -> m b -> Pipe i o m r
 finally p f = finalize (mapMake (`onException` f) p) f
