diff --git a/System/IO/ExplicitIOModes.hs b/System/IO/ExplicitIOModes.hs
--- a/System/IO/ExplicitIOModes.hs
+++ b/System/IO/ExplicitIOModes.hs
@@ -47,9 +47,11 @@
     , AppendMode
     , ReadWriteMode
 
+      -- *** Grouping the IOMode types.
     , ReadModes
     , WriteModes
 
+      -- *** A value-level IOMode.
     , IOMode(..)
     , MkIOMode(mkIOMode)
     , regularIOMode
@@ -273,17 +275,27 @@
 data ReadWriteMode
 
 -- | Class of readable IO mode types.
-class ReadModes  ioMode
+--
+-- Note the super class @ReadModesPrivate@. This type class is not exported by
+-- this module which ensures you can't accidentally make another type (like
+-- 'WriteMode' or 'AppendMode') an instance of 'ReadModes'.
+class ReadModesPrivate ioMode ⇒ ReadModes ioMode
+class ReadModesPrivate ioMode
 
 -- | Class of writable IO mode types.
-class WriteModes ioMode
+--
+-- Note the super class @WriteModesPrivate@. This type class is not exported by
+-- this module which ensures you can't accidentally make another type (like
+-- 'ReadMode') an instance of 'WriteModes'.
+class WriteModesPrivate ioMode ⇒ WriteModes ioMode
+class WriteModesPrivate ioMode
 
-instance ReadModes ReadMode
-instance ReadModes ReadWriteMode
+instance ReadModesPrivate ReadMode;       instance ReadModes ReadMode
+instance ReadModesPrivate ReadWriteMode;  instance ReadModes ReadWriteMode
 
-instance WriteModes WriteMode
-instance WriteModes AppendMode
-instance WriteModes ReadWriteMode
+instance WriteModesPrivate WriteMode;     instance WriteModes WriteMode
+instance WriteModesPrivate AppendMode;    instance WriteModes AppendMode
+instance WriteModesPrivate ReadWriteMode; instance WriteModes ReadWriteMode
 
 -- | The IOMode GADT which for each constructor specifies the associated IOMode
 -- type.
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.4.1
+version:       0.5
 cabal-version: >=1.6
 build-type:    Simple
 license:       BSD3
