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.13
+version:	0.0.0.14
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -38,11 +38,10 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/forest
-    tag:	handle-like-0.0.0.13
+    tag:	handle-like-0.0.0.14
 
 library
     hs-source-dirs:	src
-    exposed-modules:
-        Data.HandleLike, Data.HandleLike.Class, Data.HandleLike.Instance.Handle
+    exposed-modules: Data.HandleLike
     build-depends:	base == 4.*, bytestring == 0.10.*
     ghc-options:	-Wall
diff --git a/src/Data/HandleLike.hs b/src/Data/HandleLike.hs
--- a/src/Data/HandleLike.hs
+++ b/src/Data/HandleLike.hs
@@ -2,5 +2,68 @@
 
 module Data.HandleLike (HandleLike(..), hlPutStrLn) where
 
-import Data.HandleLike.Class
-import Data.HandleLike.Instance.Handle ()
+import Control.Monad
+import Data.Word
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Char8 as BSC
+import Data.String
+
+import System.IO
+
+class (Monad (HandleMonad h),
+	IsString (DebugLevel h), Ord (DebugLevel h)) =>
+	HandleLike h where
+	type HandleMonad h
+	type DebugLevel h
+	hlPut :: h -> BS.ByteString -> HandleMonad h ()
+	hlGet :: h -> Int -> HandleMonad h BS.ByteString
+	hlGetByte :: h -> HandleMonad h Word8
+	hlGetLine :: h -> HandleMonad h BS.ByteString
+	hlGetContent :: h -> HandleMonad h BS.ByteString
+	hlFlush :: h -> HandleMonad h ()
+	hlClose :: h -> HandleMonad h ()
+	hlDebug :: h -> DebugLevel h -> BS.ByteString -> HandleMonad h ()
+	hlError :: h -> BS.ByteString -> HandleMonad h a
+
+	type DebugLevel h = Priority
+	hlGetByte h = do [b] <- BS.unpack `liftM` hlGet h 1; return b
+	hlGetLine h = do
+		b <- hlGetByte h
+		case b of
+			10 -> return ""
+			_ -> BS.cons b `liftM` hlGetLine h
+	hlGetContent = flip hlGet 1
+	hlFlush _ = return ()
+	hlDebug _ _ _ = return ()
+	hlError _ msg = error $ BSC.unpack msg
+
+hlPutStrLn :: HandleLike h => h -> BS.ByteString -> HandleMonad h ()
+hlPutStrLn h = hlPut h . (`BS.append` "\n")
+
+data Priority = Low | Moderate | High | Critical
+	deriving (Show, Read, Eq, Ord, Enum)
+
+instance IsString Priority where
+	fromString s = case takeWhile (/= ':') s of
+		"low" -> Low
+		"high" -> High
+		"critical" -> Critical
+		_ -> Moderate
+
+instance HandleLike Handle where
+	type HandleMonad Handle = IO
+	hlPut = BS.hPut
+	hlGet = BS.hGet
+--	hlGetByte h = do [b] <- BS.unpack <$> BS.hGet h 1; return b
+	hlGetLine = (chopCR `liftM`) . BS.hGetLine
+--	hlGetContent = flip BS.hGet 1
+	hlDebug _ Critical = BS.hPutStr stderr
+	hlDebug _ _ = const $ return ()
+	hlFlush = hFlush
+	hlClose = hClose
+
+chopCR :: BS.ByteString -> BS.ByteString
+chopCR bs
+	| BS.null bs = ""
+	| BSC.last bs == '\r' = BSC.init bs
+	| otherwise = bs
diff --git a/src/Data/HandleLike/Class.hs b/src/Data/HandleLike/Class.hs
deleted file mode 100644
--- a/src/Data/HandleLike/Class.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-{-# LANGUAGE OverloadedStrings, TypeFamilies, FlexibleContexts #-}
-
-module Data.HandleLike.Class (
-	HandleLike(..),
-	Priority(..),
-	hlPutStrLn ) where
-
-import Control.Monad
-import Data.Word
-import qualified Data.ByteString as BS
-import qualified Data.ByteString.Char8 as BSC
-import Data.String
-
-class (Monad (HandleMonad h),
-	IsString (DebugLevel h), Ord (DebugLevel h)) =>
-	HandleLike h where
-	type HandleMonad h
-	type DebugLevel h
-	hlPut :: h -> BS.ByteString -> HandleMonad h ()
-	hlGet :: h -> Int -> HandleMonad h BS.ByteString
-	hlGetByte :: h -> HandleMonad h Word8
-	hlGetLine :: h -> HandleMonad h BS.ByteString
-	hlGetContent :: h -> HandleMonad h BS.ByteString
-	hlFlush :: h -> HandleMonad h ()
-	hlClose :: h -> HandleMonad h ()
-	hlDebug :: h -> DebugLevel h -> BS.ByteString -> HandleMonad h ()
-	hlError :: h -> BS.ByteString -> HandleMonad h a
-
-	type DebugLevel h = Priority
-	hlGetByte h = do [b] <- BS.unpack `liftM` hlGet h 1; return b
-	hlGetLine h = do
-		b <- hlGetByte h
-		case b of
-			10 -> return ""
-			_ -> BS.cons b `liftM` hlGetLine h
-	hlGetContent = flip hlGet 1
-	hlFlush _ = return ()
-	hlDebug _ _ _ = return ()
-	hlError _ msg = error $ BSC.unpack msg
-
-hlPutStrLn :: HandleLike h => h -> BS.ByteString -> HandleMonad h ()
-hlPutStrLn h = hlPut h . (`BS.append` "\n")
-
-data Priority = Low | Moderate | High | Critical
-	deriving (Show, Read, Eq, Ord, Enum)
-
-instance IsString Priority where
-	fromString s = case takeWhile (/= ':') s of
-		"low" -> Low
-		"high" -> High
-		"critical" -> Critical
-		_ -> Moderate
diff --git a/src/Data/HandleLike/Instance/Handle.hs b/src/Data/HandleLike/Instance/Handle.hs
deleted file mode 100644
--- a/src/Data/HandleLike/Instance/Handle.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE OverloadedStrings, TypeFamilies, FlexibleContexts #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-
-module Data.HandleLike.Instance.Handle () where
-
-import Control.Monad
-import qualified Data.ByteString as BS
-import qualified Data.ByteString.Char8 as BSC
-import System.IO
-import Data.HandleLike.Class
-
-instance HandleLike Handle where
-	type HandleMonad Handle = IO
-	hlPut = BS.hPut
-	hlGet = BS.hGet
---	hlGetByte h = do [b] <- BS.unpack <$> BS.hGet h 1; return b
-	hlGetLine = (chopCR `liftM`) . BS.hGetLine
---	hlGetContent = flip BS.hGet 1
-	hlDebug _ Low = const $ return ()
-	hlDebug _ _ = BS.hPutStr stderr
-	hlFlush = hFlush
-	hlClose = hClose
-
-chopCR :: BS.ByteString -> BS.ByteString
-chopCR bs
-	| BS.null bs = ""
-	| BSC.last bs == '\r' = BSC.init bs
-	| otherwise = bs
