diff --git a/handle-like.cabal b/handle-like.cabal
--- a/handle-like.cabal
+++ b/handle-like.cabal
@@ -2,7 +2,7 @@
 build-type:	Simple
 
 name:		handle-like
-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>
@@ -23,7 +23,7 @@
     >     hlGetLine :: h -> HandleMonad h ByteString
     >     hlGetContent :: h -> HandleMonad h ByteString
     >     hlClose :: h -> HandleMonad h ()
-    >     hlError :: h -> ByteString -> HandleMonad h ()
+    >     hlError :: h -> ByteString -> HandleMonad h a
     .
 
     Minimal complete difinition: hlPut, hlGet and hlClose.
@@ -35,7 +35,7 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/forest
-    tag:	handle-like-0.0.0.1
+    tag:	handle-like-0.0.0.4
 
 library
     hs-source-dirs:	src
diff --git a/src/Data/HandleLike.hs b/src/Data/HandleLike.hs
--- a/src/Data/HandleLike.hs
+++ b/src/Data/HandleLike.hs
@@ -16,7 +16,7 @@
 	hlGetLine :: h -> HandleMonad h BS.ByteString
 	hlGetContent :: h -> HandleMonad h BS.ByteString
 	hlClose :: h -> HandleMonad h ()
-	hlError :: h -> BS.ByteString -> HandleMonad h ()
+	hlError :: h -> BS.ByteString -> HandleMonad h a
 
 	hlGetByte h = do [b] <- BS.unpack `liftM` hlGet h 1; return b
 	hlGetLine h = do
@@ -25,7 +25,7 @@
 			10 -> return ""
 			_ -> BS.cons b `liftM` hlGetLine h
 	hlGetContent = flip hlGet 1
-	hlError = hlPut
+	hlError _ msg = error $ BSC.unpack msg
 
 instance HandleLike Handle where
 	type HandleMonad Handle = IO
