diff --git a/Data/ByteString/Char8/ExplicitIOModes.hs b/Data/ByteString/Char8/ExplicitIOModes.hs
deleted file mode 100644
--- a/Data/ByteString/Char8/ExplicitIOModes.hs
+++ /dev/null
@@ -1,85 +0,0 @@
-{-# LANGUAGE UnicodeSyntax, NoImplicitPrelude #-}
-
--------------------------------------------------------------------------------
--- |
--- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009-2010 Bas van Dijk
--- License     :  BSD3 (see the file LICENSE)
--- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
---
--- This module lifts the bytestring IO operations to handles with explicit
--- IOModes.
---
--------------------------------------------------------------------------------
-
-module Data.ByteString.Char8.ExplicitIOModes
-    ( hGetLine
-    , hGetContents
-    , hGet
-    , hGetNonBlocking
-
-    , hPut
-    , hPutStr
-    , hPutStrLn
-    ) where
-
--------------------------------------------------------------------------------
--- Imports
--------------------------------------------------------------------------------
-
--- from base:
-import Data.Int  ( Int )
-import System.IO ( IO )
-
--- from bytestring:
-import Data.ByteString.Char8                ( ByteString )
-import qualified Data.ByteString.Char8 as B ( hGetLine
-                                            , hGetContents
-                                            , hGet
-                                            , hGetNonBlocking
-
-                                            , hPut
-                                            , hPutStr
-                                            , hPutStrLn
-                                            )
-
--- from ourselves:
-import System.IO.ExplicitIOModes          ( ReadModes, WriteModes )
-import System.IO.ExplicitIOModes.Internal ( Handle, wrap, wrap2 )
-
-
--------------------------------------------------------------------------------
--- ByteString I/O with file handles with explicit IOModes
--------------------------------------------------------------------------------
-
--- | Wraps @Data.ByteString.@'B.hGetLine'.
-hGetLine ∷ ReadModes ioMode ⇒ Handle ioMode → IO ByteString
-hGetLine = wrap B.hGetLine
-
--- | Wraps @Data.ByteString.@'B.hGetContents'.
-hGetContents ∷ ReadModes ioMode ⇒ Handle ioMode → IO ByteString
-hGetContents = wrap B.hGetContents
-
--- | Wraps @Data.ByteString.@'B.hGet'.
-hGet ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGet = wrap2 B.hGet
-
--- | Wraps @Data.ByteString.@'B.hGetNonBlocking'.
-hGetNonBlocking ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGetNonBlocking = wrap2 B.hGetNonBlocking
-
-
--- | Wraps @Data.ByteString.@'B.hPut'.
-hPut ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPut = wrap2 B.hPut
-
--- | Wraps @Data.ByteString.@'B.hPutStr'.
-hPutStr ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPutStr = wrap2 B.hPutStr
-
--- | Wraps @Data.ByteString.@'B.hPutStrLn'.
-hPutStrLn ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPutStrLn = wrap2 B.hPutStrLn
-
-
--- The End ---------------------------------------------------------------------
diff --git a/Data/ByteString/ExplicitIOModes.hs b/Data/ByteString/ExplicitIOModes.hs
deleted file mode 100644
--- a/Data/ByteString/ExplicitIOModes.hs
+++ /dev/null
@@ -1,85 +0,0 @@
-{-# LANGUAGE UnicodeSyntax, NoImplicitPrelude #-}
-
--------------------------------------------------------------------------------
--- |
--- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009-2010 Bas van Dijk
--- License     :  BSD3 (see the file LICENSE)
--- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
---
--- This module lifts the bytestring IO operations to handles with explicit
--- IOModes.
---
--------------------------------------------------------------------------------
-
-module Data.ByteString.ExplicitIOModes
-    ( hGetLine
-    , hGetContents
-    , hGet
-    , hGetNonBlocking
-
-    , hPut
-    , hPutStr
-    , hPutStrLn
-    ) where
-
--------------------------------------------------------------------------------
--- Imports
--------------------------------------------------------------------------------
-
--- from base:
-import Data.Int  ( Int )
-import System.IO ( IO )
-
--- from bytestring:
-import Data.ByteString                ( ByteString )
-import qualified Data.ByteString as B ( hGetLine
-                                      , hGetContents
-                                      , hGet
-                                      , hGetNonBlocking
-
-                                      , hPut
-                                      , hPutStr
-                                      , hPutStrLn
-                                      )
-
--- from ourselves:
-import System.IO.ExplicitIOModes          ( ReadModes, WriteModes )
-import System.IO.ExplicitIOModes.Internal ( Handle, wrap, wrap2 )
-
-
--------------------------------------------------------------------------------
--- ByteString I/O with file handles with explicit IOModes
--------------------------------------------------------------------------------
-
--- | Wraps @Data.ByteString.@'B.hGetLine'.
-hGetLine ∷ ReadModes ioMode ⇒ Handle ioMode → IO ByteString
-hGetLine = wrap B.hGetLine
-
--- | Wraps @Data.ByteString.@'B.hGetContents'.
-hGetContents ∷ ReadModes ioMode ⇒ Handle ioMode → IO ByteString
-hGetContents = wrap B.hGetContents
-
--- | Wraps @Data.ByteString.@'B.hGet'.
-hGet ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGet = wrap2 B.hGet
-
--- | Wraps @Data.ByteString.@'B.hGetNonBlocking'.
-hGetNonBlocking ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGetNonBlocking = wrap2 B.hGetNonBlocking
-
-
--- | Wraps @Data.ByteString.@'B.hPut'.
-hPut ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPut = wrap2 B.hPut
-
--- | Wraps @Data.ByteString.@'B.hPutStr'.
-hPutStr ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPutStr = wrap2 B.hPutStr
-
--- | Wraps @Data.ByteString.@'B.hPutStrLn'.
-hPutStrLn ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPutStrLn = wrap2 B.hPutStrLn
-
-
--- The End ---------------------------------------------------------------------
diff --git a/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs b/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs
deleted file mode 100644
--- a/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs
+++ /dev/null
@@ -1,67 +0,0 @@
-{-# LANGUAGE UnicodeSyntax, NoImplicitPrelude #-}
-
--------------------------------------------------------------------------------
--- |
--- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009-2010 Bas van Dijk
--- License     :  BSD3 (see the file LICENSE)
--- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
---
--- This module lifts the bytestring IO operations to handles with explicit
--- IOModes.
---
--------------------------------------------------------------------------------
-
-module Data.ByteString.Lazy.Char8.ExplicitIOModes
-    ( hGetContents
-    , hGet
-    , hGetNonBlocking
-
-    , hPut
-    ) where
-
--------------------------------------------------------------------------------
--- Imports
--------------------------------------------------------------------------------
-
--- from base:
-import Data.Int  ( Int )
-import System.IO ( IO )
-
--- from bytestring:
-import Data.ByteString.Lazy.Char8                ( ByteString )
-import qualified Data.ByteString.Lazy.Char8 as B ( hGetContents
-                                                 , hGet
-                                                 , hGetNonBlocking
-
-                                                 , hPut
-                                                 )
-
--- from ourselves:
-import System.IO.ExplicitIOModes          ( ReadModes, WriteModes )
-import System.IO.ExplicitIOModes.Internal ( Handle, wrap, wrap2 )
-
-
--------------------------------------------------------------------------------
--- ByteString I/O with file handles with explicit IOModes
--------------------------------------------------------------------------------
-
--- | Wraps @Data.ByteString.@'B.hGetContents'.
-hGetContents ∷ ReadModes ioMode ⇒ Handle ioMode → IO ByteString
-hGetContents = wrap B.hGetContents
-
--- | Wraps @Data.ByteString.@'B.hGet'.
-hGet ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGet = wrap2 B.hGet
-
--- | Wraps @Data.ByteString.@'B.hGetNonBlocking'.
-hGetNonBlocking ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGetNonBlocking = wrap2 B.hGetNonBlocking
-
-
--- | Wraps @Data.ByteString.@'B.hPut'.
-hPut ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPut = wrap2 B.hPut
-
-
--- The End ---------------------------------------------------------------------
diff --git a/Data/ByteString/Lazy/ExplicitIOModes.hs b/Data/ByteString/Lazy/ExplicitIOModes.hs
deleted file mode 100644
--- a/Data/ByteString/Lazy/ExplicitIOModes.hs
+++ /dev/null
@@ -1,73 +0,0 @@
-{-# LANGUAGE UnicodeSyntax, NoImplicitPrelude #-}
-
--------------------------------------------------------------------------------
--- |
--- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009-2010 Bas van Dijk
--- License     :  BSD3 (see the file LICENSE)
--- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
---
--- This module lifts the bytestring IO operations to handles with explicit
--- IOModes.
---
--------------------------------------------------------------------------------
-
-module Data.ByteString.Lazy.ExplicitIOModes
-    ( hGetContents
-    , hGet
-    , hGetNonBlocking
-
-    , hPut
-    , hPutStr
-    ) where
-
--------------------------------------------------------------------------------
--- Imports
--------------------------------------------------------------------------------
-
--- from base:
-import Data.Int  ( Int )
-import System.IO ( IO )
-
--- from bytestring:
-import Data.ByteString.Lazy                ( ByteString )
-import qualified Data.ByteString.Lazy as B ( hGetContents
-                                           , hGet
-                                           , hGetNonBlocking
-
-                                           , hPut
-                                           , hPutStr
-                                           )
-
--- from ourselves:
-import System.IO.ExplicitIOModes          ( ReadModes, WriteModes )
-import System.IO.ExplicitIOModes.Internal ( Handle, wrap, wrap2 )
-
-
--------------------------------------------------------------------------------
--- ByteString I/O with file handles with explicit IOModes
--------------------------------------------------------------------------------
-
--- | Wraps @Data.ByteString.@'B.hGetContents'.
-hGetContents ∷ ReadModes ioMode ⇒ Handle ioMode → IO ByteString
-hGetContents = wrap B.hGetContents
-
--- | Wraps @Data.ByteString.@'B.hGet'.
-hGet ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGet = wrap2 B.hGet
-
--- | Wraps @Data.ByteString.@'B.hGetNonBlocking'.
-hGetNonBlocking ∷ ReadModes ioMode ⇒ Handle ioMode → Int → IO ByteString
-hGetNonBlocking = wrap2 B.hGetNonBlocking
-
-
--- | Wraps @Data.ByteString.@'B.hPut'.
-hPut ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPut = wrap2 B.hPut
-
--- | Wraps @Data.ByteString.@'B.hPutStr'.
-hPutStr ∷ WriteModes ioMode ⇒ Handle ioMode → ByteString → IO ()
-hPutStr = wrap2 B.hPutStr
-
-
--- The End ---------------------------------------------------------------------
diff --git a/System/IO/ExplicitIOModes.hs b/System/IO/ExplicitIOModes.hs
--- a/System/IO/ExplicitIOModes.hs
+++ b/System/IO/ExplicitIOModes.hs
@@ -239,7 +239,8 @@
 import Data.Tagged ( Tagged(Tagged), unTagged )
 
 -- from ourselves:
-import System.IO.ExplicitIOModes.Internal ( Handle(Handle), wrap)
+import System.IO.ExplicitIOModes.Internal ( Handle(Handle) )
+import System.IO.ExplicitIOModes.Unsafe   ( wrap )
 
 
 --------------------------------------------------------------------------------
diff --git a/System/IO/ExplicitIOModes/Internal.hs b/System/IO/ExplicitIOModes/Internal.hs
--- a/System/IO/ExplicitIOModes/Internal.hs
+++ b/System/IO/ExplicitIOModes/Internal.hs
@@ -10,15 +10,9 @@
 
 -- | A handle to a file with an explicit IOMode.
 --
--- Wraps: @System.IO.@'SIO.Handle'.
+-- Wraps: @System.IO.'System.IO.Handle'@.
 newtype Handle ioMode = Handle
     { -- | Retrieves the regular @System.IO.@'System.IO.Handle'.
       regularHandle ∷ System.IO.Handle
     }
     deriving ( Show, Eq, Typeable )
-
-wrap ∷ (System.IO.Handle → α) → (Handle ioMode → α)
-wrap f = \h → f (regularHandle h)
-
-wrap2 ∷ (System.IO.Handle → β → α) → (Handle ioMode → β → α)
-wrap2 f = \h y → f (regularHandle h) y
diff --git a/System/IO/ExplicitIOModes/Unsafe.hs b/System/IO/ExplicitIOModes/Unsafe.hs
new file mode 100644
--- /dev/null
+++ b/System/IO/ExplicitIOModes/Unsafe.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE NoImplicitPrelude, UnicodeSyntax #-}
+
+module System.IO.ExplicitIOModes.Unsafe ( regularHandle
+                                        , wrap, wrap2
+                                        ) where
+
+-- from base:
+import qualified System.IO ( Handle )
+
+-- from ourselves:
+import System.IO.ExplicitIOModes.Internal ( Handle, regularHandle )
+
+wrap ∷ (System.IO.Handle → α) → (Handle ioMode → α)
+wrap f = \h → f (regularHandle h)
+
+wrap2 ∷ (System.IO.Handle → β → α) → (Handle ioMode → β → α)
+wrap2 f = \h y → f (regularHandle h) y
diff --git a/explicit-iomodes.cabal b/explicit-iomodes.cabal
--- a/explicit-iomodes.cabal
+++ b/explicit-iomodes.cabal
@@ -1,5 +1,5 @@
 name:          explicit-iomodes
-version:       0.3
+version:       0.4
 cabal-version: >=1.6
 build-type:    Simple
 license:       BSD3
@@ -16,6 +16,9 @@
                explicitly specify the needed IOMode. This way it is
                impossible to read from a write-only handle or write to
                a read-only handle for example.
+               .
+	       See the @explicit-iomodes-bytestring@ package for
+	       @ByteString@ operations.
 
 source-repository head
   Type:     darcs
@@ -25,13 +28,7 @@
   GHC-Options: -Wall
   build-depends: base                 >= 4     && < 4.3
                , base-unicode-symbols >= 0.1.1 && < 0.3
-               , bytestring           == 0.9.*
                , tagged               == 0.0.*
   exposed-modules: System.IO.ExplicitIOModes
-
-                   Data.ByteString.ExplicitIOModes
-                   Data.ByteString.Char8.ExplicitIOModes
-                   Data.ByteString.Lazy.ExplicitIOModes
-                   Data.ByteString.Lazy.Char8.ExplicitIOModes
-
-  other-modules: System.IO.ExplicitIOModes.Internal
+                   System.IO.ExplicitIOModes.Unsafe
+  other-modules:   System.IO.ExplicitIOModes.Internal
