diff --git a/Data/ByteString/Char8/ExplicitIOModes.hs b/Data/ByteString/Char8/ExplicitIOModes.hs
--- a/Data/ByteString/Char8/ExplicitIOModes.hs
+++ b/Data/ByteString/Char8/ExplicitIOModes.hs
@@ -3,7 +3,7 @@
 -------------------------------------------------------------------------------
 -- |
 -- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009 Bas van Dijk
+-- Copyright   :  (c) 2009-2010 Bas van Dijk
 -- License     :  BSD3 (see the file LICENSE)
 -- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
 --
diff --git a/Data/ByteString/ExplicitIOModes.hs b/Data/ByteString/ExplicitIOModes.hs
--- a/Data/ByteString/ExplicitIOModes.hs
+++ b/Data/ByteString/ExplicitIOModes.hs
@@ -3,7 +3,7 @@
 -------------------------------------------------------------------------------
 -- |
 -- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009 Bas van Dijk
+-- Copyright   :  (c) 2009-2010 Bas van Dijk
 -- License     :  BSD3 (see the file LICENSE)
 -- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
 --
diff --git a/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs b/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs
--- a/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs
+++ b/Data/ByteString/Lazy/Char8/ExplicitIOModes.hs
@@ -3,7 +3,7 @@
 -------------------------------------------------------------------------------
 -- |
 -- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009 Bas van Dijk
+-- Copyright   :  (c) 2009-2010 Bas van Dijk
 -- License     :  BSD3 (see the file LICENSE)
 -- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
 --
diff --git a/Data/ByteString/Lazy/ExplicitIOModes.hs b/Data/ByteString/Lazy/ExplicitIOModes.hs
--- a/Data/ByteString/Lazy/ExplicitIOModes.hs
+++ b/Data/ByteString/Lazy/ExplicitIOModes.hs
@@ -3,7 +3,7 @@
 -------------------------------------------------------------------------------
 -- |
 -- Module      :  Data.ByteString.ExplicitIOModes
--- Copyright   :  (c) 2009 Bas van Dijk
+-- Copyright   :  (c) 2009-2010 Bas van Dijk
 -- License     :  BSD3 (see the file LICENSE)
 -- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
 --
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009 Bas van Dijk
+Copyright (c) 2009-2010 Bas van Dijk
 
 All rights reserved.
 
diff --git a/System/IO/ExplicitIOModes.hs b/System/IO/ExplicitIOModes.hs
--- a/System/IO/ExplicitIOModes.hs
+++ b/System/IO/ExplicitIOModes.hs
@@ -9,7 +9,7 @@
 -------------------------------------------------------------------------------
 -- |
 -- Module      :  System.IO.ExplicitIOModes
--- Copyright   :  (c) 2009 Bas van Dijk
+-- Copyright   :  (c) 2009-2010 Bas van Dijk
 -- License     :  BSD3 (see the file LICENSE)
 -- Maintainer  :  Bas van Dijk <v.dijk.bas@gmail.com>
 --
@@ -24,8 +24,8 @@
 --
 -- There's one exception to this last statement: If you are using the standard
 -- handles 'stdin', 'stdout' or 'stderr' in a mode which isn't their default
--- mode ('R' for 'stdin' and 'W' for 'stdout' and 'stderr') you have to 'cast'
--- these handles to the expected IOMode.
+-- mode ('ReadMode' for 'stdin' and 'WriteMode' for 'stdout' and 'stderr') you
+-- have to 'cast' these handles to the expected IOMode.
 --
 --------------------------------------------------------------------------------
 
@@ -42,10 +42,17 @@
       -- ** IO Modes
 
       -- | Types that represent the IOMode a 'Handle' can be in.
-    , R, W, A, RW
+    , IOMode(..)
+    , regularIOMode
 
-    , ReadModes, WriteModes
+    , ReadMode
+    , WriteMode
+    , AppendMode
+    , ReadWriteMode
 
+    , ReadModes
+    , WriteModes
+
       -- ** Standard handles
 
       -- | These standard handles have concrete IOModes by default which work
@@ -62,8 +69,6 @@
       -- ** Opening files
     , withFile
     , openFile
-    , IOMode(..)
-    , regularIOMode
 
       -- ** Closing files
     , hClose
@@ -125,7 +130,7 @@
 
     -- | Note that the following text input operations are polymorphic in the
     -- IOMode of the given handle. However the IOModes are restricted to
-    -- 'ReadModes' only which can be either 'R' or 'RW'.
+    -- 'ReadModes' only which can be either 'ReadMode' or 'ReadWriteMode'.
     , hWaitForInput
     , hReady
     , hGetChar
@@ -137,7 +142,8 @@
 
     -- | Note that the following text output operations are polymorphic in the
     -- IOMode of the given handle. However the IOModes are restricted to
-    -- 'WriteModes' only which can be either 'W', 'A' or 'RW'.
+    -- 'WriteModes' only which can be either 'WriteMode', 'AppendMode' or
+    -- 'ReadWriteMode'.
     , hPutChar
     , hPutStr
     , hPutStrLn
@@ -204,6 +210,10 @@
     ) where
 
 
+--------------------------------------------------------------------------------
+-- Imports
+--------------------------------------------------------------------------------
+
 -- from base:
 import Prelude             ( Integer )
 import Control.Monad       ( return, (>>=), fail, liftM, liftM2 )
@@ -232,21 +242,71 @@
 import System.IO.ExplicitIOModes.Internal ( Handle(Handle), wrap)
 
 
+--------------------------------------------------------------------------------
 -- * Files and handles
+--------------------------------------------------------------------------------
 
 -- ** IO Modes
 
+-- | The IOMode GADT which for each constructor specifies the associated IOMode
+-- type.
+--
+-- Also see: @System.IO.@'SIO.IOMode'.
+data IOMode ioMode where
+    ReadMode      ∷ IOMode ReadMode
+    WriteMode     ∷ IOMode WriteMode
+    AppendMode    ∷ IOMode AppendMode
+    ReadWriteMode ∷ IOMode ReadWriteMode
+
+-- | Retrieves the regular @System.IO.@'SIO.IOMode'.
+regularIOMode ∷ IOMode ioMode → SIO.IOMode
+regularIOMode ReadMode      = SIO.ReadMode
+regularIOMode WriteMode     = SIO.WriteMode
+regularIOMode AppendMode    = SIO.AppendMode
+regularIOMode ReadWriteMode = SIO.ReadWriteMode
+
+instance Eq (IOMode ioMode) where
+    ReadMode      == ReadMode      = True
+    WriteMode     == WriteMode     = True
+    AppendMode    == AppendMode    = True
+    ReadWriteMode == ReadWriteMode = True
+    _             == _             = False
+
+instance Ord (IOMode ioMode) where
+    ReadWriteMode <= ReadWriteMode = True
+    ReadWriteMode <= _             = False
+
+    AppendMode    <= ReadWriteMode = True
+    AppendMode    <= AppendMode    = True
+    AppendMode    <= _             = False
+
+    WriteMode     <= ReadWriteMode = True
+    WriteMode     <= AppendMode    = True
+    WriteMode     <= WriteMode     = True
+    WriteMode     <= _             = False
+
+    ReadMode      <= ReadWriteMode = True
+    ReadMode      <= AppendMode    = True
+    ReadMode      <= WriteMode     = True
+    ReadMode      <= ReadMode      = True
+
+instance Show (IOMode ioMode) where
+    show ReadMode      = "ReadMode"
+    show WriteMode     = "WriteMode"
+    show AppendMode    = "AppendMode"
+    show ReadWriteMode = "ReadWriteMode"
+
 -- | Read only.
-data R
+data ReadMode
 
 -- | Write only.
-data W
+data WriteMode
 
 -- | Write only by appending.
-data A
+data AppendMode
 
 -- | Both read and write.
-data RW
+data ReadWriteMode
 
 -- | Class of readable IO mode types.
 class ReadModes  ioMode
@@ -254,25 +314,25 @@
 -- | Class of writable IO mode types.
 class WriteModes ioMode
 
-instance ReadModes R
-instance ReadModes RW
+instance ReadModes ReadMode
+instance ReadModes ReadWriteMode
 
-instance WriteModes W
-instance WriteModes A
-instance WriteModes RW
+instance WriteModes WriteMode
+instance WriteModes AppendMode
+instance WriteModes ReadWriteMode
 
 -- ** Standard handles
 
 -- | Wraps: @System.IO.@'SIO.stdin'.
-stdin ∷ Handle R
+stdin ∷ Handle ReadMode
 stdin = Handle SIO.stdin
 
 -- | Wraps: @System.IO.@'SIO.stdout'.
-stdout ∷ Handle W
+stdout ∷ Handle WriteMode
 stdout = Handle SIO.stdout
 
 -- | Wraps: @System.IO.@'SIO.stderr'.
-stderr ∷ Handle W
+stderr ∷ Handle WriteMode
 stderr = Handle SIO.stderr
 
 -- | Cast the IOMode of a handle if the handle supports it.
@@ -287,22 +347,23 @@
 class CheckMode ioMode where
     checkMode ∷ Tagged ioMode (SIO.Handle → IO Bool)
 
-instance CheckMode R where
+instance CheckMode ReadMode where
     checkMode = Tagged SIO.hIsReadable
 
-instance CheckMode W where
+instance CheckMode WriteMode where
     checkMode = Tagged SIO.hIsWritable
 
-instance CheckMode A where
+instance CheckMode AppendMode where
     checkMode = Tagged SIO.hIsWritable
 
-instance CheckMode RW where
+instance CheckMode ReadWriteMode where
     checkMode = Tagged $ \h → liftM2 (∧) (SIO.hIsReadable h)
                                          (SIO.hIsWritable h)
 
 
+--------------------------------------------------------------------------------
 -- * Opening and closing files
-
+--------------------------------------------------------------------------------
 
 -- ** Opening files
 
@@ -314,54 +375,6 @@
 openFile ∷ FilePath → IOMode ioMode → IO (Handle ioMode)
 openFile fp = liftM Handle ∘ SIO.openFile fp ∘ regularIOMode
 
--- | The IOMode GADT which for each constructor specifies the associated IOMode
--- type.
---
--- Also see: @System.IO.@'SIO.IOMode'.
-data IOMode ioMode where
-    ReadMode      ∷ IOMode R
-    WriteMode     ∷ IOMode W
-    AppendMode    ∷ IOMode A
-    ReadWriteMode ∷ IOMode RW
-
--- | Retrieves the regular @System.IO.@'SIO.IOMode'.
-regularIOMode ∷ IOMode ioMode → SIO.IOMode
-regularIOMode ReadMode      = SIO.ReadMode
-regularIOMode WriteMode     = SIO.WriteMode
-regularIOMode AppendMode    = SIO.AppendMode
-regularIOMode ReadWriteMode = SIO.ReadWriteMode
-
-instance Eq (IOMode ioMode) where
-    ReadMode      == ReadMode      = True
-    WriteMode     == WriteMode     = True
-    AppendMode    == AppendMode    = True
-    ReadWriteMode == ReadWriteMode = True
-    _             == _             = False
-
-instance Ord (IOMode ioMode) where
-    ReadWriteMode <= ReadWriteMode = True
-    ReadWriteMode <= _             = False
-
-    AppendMode    <= ReadWriteMode = True
-    AppendMode    <= AppendMode    = True
-    AppendMode    <= _             = False
-
-    WriteMode     <= ReadWriteMode = True
-    WriteMode     <= AppendMode    = True
-    WriteMode     <= WriteMode     = True
-    WriteMode     <= _             = False
-
-    ReadMode      <= ReadWriteMode = True
-    ReadMode      <= AppendMode    = True
-    ReadMode      <= WriteMode     = True
-    ReadMode      <= ReadMode      = True
-
-instance Show (IOMode ioMode) where
-    show ReadMode      = "ReadMode"
-    show WriteMode     = "WriteMode"
-    show AppendMode    = "AppendMode"
-    show ReadWriteMode = "ReadWriteMode"
-
 -- ** Closing files
 
 -- | Wraps: @System.IO.@'SIO.hClose'.
@@ -369,8 +382,9 @@
 hClose = wrap SIO.hClose
 
 
+--------------------------------------------------------------------------------
 -- * Operations on handles
-
+--------------------------------------------------------------------------------
 
 -- ** Determining and changing the size of a file
 
@@ -470,7 +484,9 @@
 #endif
 
 
+--------------------------------------------------------------------------------
 -- * Text input and output
+--------------------------------------------------------------------------------
 
 -- ** Text input
 
@@ -518,7 +534,9 @@
 hPrint = wrap SIO.hPrint
 
 
+--------------------------------------------------------------------------------
 -- * Binary input and output
+--------------------------------------------------------------------------------
 
 -- | Wraps: @System.IO.@'SIO.withBinaryFile'.
 withBinaryFile ∷ FilePath → IOMode ioMode → (Handle ioMode → IO r) → IO r
@@ -551,24 +569,26 @@
 #endif
 
 
+--------------------------------------------------------------------------------
 -- * Temporary files
+--------------------------------------------------------------------------------
 
 -- | Wraps: @System.IO.@'SIO.openTempFile'.
-openTempFile ∷ FilePath → String → IO (FilePath, Handle RW)
+openTempFile ∷ FilePath → String → IO (FilePath, Handle ReadWriteMode)
 openTempFile fp template =
     liftM (second Handle) $ SIO.openTempFile fp template
 
 -- | Wraps: @System.IO.@'SIO.openBinaryTempFile'.
-openBinaryTempFile ∷ FilePath → String → IO (FilePath, Handle RW)
+openBinaryTempFile ∷ FilePath → String → IO (FilePath, Handle ReadWriteMode)
 openBinaryTempFile fp template =
     liftM (second Handle) $ SIO.openBinaryTempFile fp template
 
 #if MIN_VERSION_base(4,2,0)
-openTempFileWithDefaultPermissions ∷ FilePath → String → IO (FilePath, Handle RW)
+openTempFileWithDefaultPermissions ∷ FilePath → String → IO (FilePath, Handle ReadWriteMode)
 openTempFileWithDefaultPermissions fp template =
     liftM (second Handle) $ SIO.openTempFileWithDefaultPermissions fp template
 
-openBinaryTempFileWithDefaultPermissions ∷ FilePath → String → IO (FilePath, Handle RW)
+openBinaryTempFileWithDefaultPermissions ∷ FilePath → String → IO (FilePath, Handle ReadWriteMode)
 openBinaryTempFileWithDefaultPermissions fp template =
     liftM (second Handle) $ SIO.openBinaryTempFileWithDefaultPermissions fp template
 #endif
@@ -583,12 +603,13 @@
 hGetEncoding = wrap SIO.hGetEncoding
 
 
+--------------------------------------------------------------------------------
 -- * Newline conversion
+--------------------------------------------------------------------------------
 
 hSetNewlineMode ∷ Handle ioMode → SIO.NewlineMode → IO ()
 hSetNewlineMode = wrap SIO.hSetNewlineMode
 #endif
-
 
 
 -- The End ---------------------------------------------------------------------
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
@@ -3,22 +3,22 @@
 module System.IO.ExplicitIOModes.Internal where
 
 -- from base:
-import Text.Show                  ( Show )
-import Data.Eq                    ( Eq )
-import Data.Typeable              ( Typeable )
-import qualified System.IO as SIO ( Handle )
+import Text.Show           ( Show )
+import Data.Eq             ( Eq )
+import Data.Typeable       ( Typeable )
+import qualified System.IO ( Handle )
 
 -- | A handle to a file with an explicit IOMode.
 --
 -- Wraps: @System.IO.@'SIO.Handle'.
 newtype Handle ioMode = Handle
-    { -- | Retrieves the regular @System.IO.@'SIO.Handle'.
-      regularHandle ∷ SIO.Handle
+    { -- | Retrieves the regular @System.IO.@'System.IO.Handle'.
+      regularHandle ∷ System.IO.Handle
     }
     deriving ( Show, Eq, Typeable )
 
-wrap ∷ (SIO.Handle → α) → (Handle ioMode → α)
+wrap ∷ (System.IO.Handle → α) → (Handle ioMode → α)
 wrap f = \h → f (regularHandle h)
 
-wrap2 ∷ (SIO.Handle → β → α) → (Handle ioMode → β → α)
+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,10 +1,10 @@
 name:          explicit-iomodes
-version:       0.2
+version:       0.3
 cabal-version: >=1.6
 build-type:    Simple
 license:       BSD3
 license-file:  LICENSE
-copyright:     2009 Bas van Dijk
+copyright:     2009-2010 Bas van Dijk
 author:        Bas van Dijk
 maintainer:    Bas van Dijk <v.dijk.bas@gmail.com>
 stability:     experimental
@@ -24,7 +24,7 @@
 Library
   GHC-Options: -Wall
   build-depends: base                 >= 4     && < 4.3
-               , base-unicode-symbols >= 0.1.1 && < 0.2
+               , base-unicode-symbols >= 0.1.1 && < 0.3
                , bytestring           == 0.9.*
                , tagged               == 0.0.*
   exposed-modules: System.IO.ExplicitIOModes
