diff --git a/Text/Appar/ByteString.hs b/Text/Appar/ByteString.hs
--- a/Text/Appar/ByteString.hs
+++ b/Text/Appar/ByteString.hs
@@ -21,15 +21,8 @@
   , module Text.Appar.Parser
   ) where
 
-import Text.Appar.Parser
 import Data.ByteString.Char8 (ByteString)
-import qualified Data.ByteString.Char8 as S hiding (ByteString)
-
-instance Input ByteString where
-    car   = S.head
-    cdr   = S.tail
-    nil   = S.empty
-    isNil = S.null
+import Text.Appar.Parser
 
 {-|
   Parser synonym for strict 'ByteString'.
diff --git a/Text/Appar/Input.hs b/Text/Appar/Input.hs
new file mode 100644
--- /dev/null
+++ b/Text/Appar/Input.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Text.Appar.Input where
+
+import qualified Data.ByteString.Char8 as S
+import qualified Data.ByteString.Lazy.Char8 as L
+
+----------------------------------------------------------------
+
+{-|
+  The class for parser input.
+-}
+class Eq inp => Input inp where
+    -- | The head function for input
+    car :: inp -> Char
+    -- | The tail function for input
+    cdr :: inp -> inp
+    -- | The end of input
+    nil :: inp
+    -- | The function to check the end of input
+    isNil :: inp -> Bool
+
+
+instance Input S.ByteString where
+    car   = S.head
+    cdr   = S.tail
+    nil   = S.empty
+    isNil = S.null
+
+instance Input L.ByteString where
+    car   = L.head
+    cdr   = L.tail
+    nil   = L.empty
+    isNil = L.null
+
+instance Input String where
+    car = head
+    cdr = tail
+    isNil = null
+    nil = ""
diff --git a/Text/Appar/LazyByteString.hs b/Text/Appar/LazyByteString.hs
--- a/Text/Appar/LazyByteString.hs
+++ b/Text/Appar/LazyByteString.hs
@@ -21,15 +21,8 @@
   , module Text.Appar.Parser
   ) where
 
-import Text.Appar.Parser
 import Data.ByteString.Lazy.Char8 (ByteString)
-import qualified Data.ByteString.Lazy.Char8 as S hiding (ByteString)
-
-instance Input ByteString where
-    car   = S.head
-    cdr   = S.tail
-    nil   = S.empty
-    isNil = S.null
+import Text.Appar.Parser
 
 {-|
   Parser synonym for strict 'ByteString'.
diff --git a/Text/Appar/Parser.hs b/Text/Appar/Parser.hs
--- a/Text/Appar/Parser.hs
+++ b/Text/Appar/Parser.hs
@@ -57,6 +57,7 @@
 import Control.Monad
 import Data.ByteString.Lazy.Char8 (ByteString)
 import Data.Char
+import Text.Appar.Input
 
 ----------------------------------------------------------------
 
@@ -64,21 +65,6 @@
   -- | Getting the internal parser.
     runParser :: inp -> (Maybe a, inp)
   }
-
-----------------------------------------------------------------
-
-{-|
-  The class for parser input.
--}
-class Eq inp => Input inp where
-    -- | The head function for input
-    car :: inp -> Char
-    -- | The tail function for input
-    cdr :: inp -> inp
-    -- | The end of input
-    nil :: inp
-    -- | The function to check the end of input
-    isNil :: inp -> Bool
 
 ----------------------------------------------------------------
 
diff --git a/Text/Appar/String.hs b/Text/Appar/String.hs
--- a/Text/Appar/String.hs
+++ b/Text/Appar/String.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE TypeSynonymInstances #-}
-
 {-|
 Simple 'Applicative' parser whose input is 'String'.
 The usage is the same as parsec.
@@ -24,12 +22,6 @@
   ) where
 
 import Text.Appar.Parser
-
-instance Input String where
-    car = head
-    cdr = tail
-    isNil = null
-    nil = ""
 
 {-|
   Parser synonym for 'String'.
diff --git a/appar.cabal b/appar.cabal
--- a/appar.cabal
+++ b/appar.cabal
@@ -1,5 +1,5 @@
 Name:                   appar
-Version:                0.1.1
+Version:                0.1.2
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -12,13 +12,14 @@
 Extra-Source-Files:     README
 library
   if impl(ghc >= 6.12)
-    GHC-Options:        -Wall -fno-warn-orphans -fno-warn-unused-do-bind
+    GHC-Options:        -Wall -fno-warn-unused-do-bind
   else
-    GHC-Options:        -Wall -fno-warn-orphans
+    GHC-Options:        -Wall
   Exposed-Modules:      Text.Appar.String
                         Text.Appar.ByteString
                         Text.Appar.LazyByteString
-  Other-Modules:        Text.Appar.Parser
+  Other-Modules:        Text.Appar.Input
+                        Text.Appar.Parser
   Build-Depends:        base >= 4 && < 5, bytestring
 Source-Repository head
   Type:                 git
