diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
index 9696890402eb487056a847f6068443036cf994c1..1cf50fc81b87fcc876619a76ebbbd85e5fb6fd25 100644
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+2.2.0.1
+-------
+* Fixed a bug caused by the change in how `transformers` 0.4 exports its data types. We will now export `runFooT` for each transformer again!
+
 2.2
 ---
 * `transformers` 0.4 support
diff --git a/Control/Monad/Cont.hs b/Control/Monad/Cont.hs
index 58cbf735cb06b45262af59a62352a37e4c03dd4b..82d92ba12325a465053399b6ad1e77a1f7a75c45 100644
--- a/Control/Monad/Cont.hs
+++ b/Control/Monad/Cont.hs
@@ -58,7 +58,8 @@ module Control.Monad.Cont (
     mapCont,
     withCont,
     -- * The ContT monad transformer
-    ContT(..),
+    ContT(ContT),
+    runContT,
     mapContT,
     withContT,
     module Control.Monad,
diff --git a/Control/Monad/Error.hs b/Control/Monad/Error.hs
index 21e0074ca6d6d7be939846680d2262cfeb9822ec..1a6e8fc72626771e5f9eb0f43dfd7daf500f526d 100644
--- a/Control/Monad/Error.hs
+++ b/Control/Monad/Error.hs
@@ -37,7 +37,8 @@ module Control.Monad.Error (
     MonadError(..),
     Error(..),
     -- * The ErrorT monad transformer
-    ErrorT(..),
+    ErrorT(ErrorT),
+    runErrorT,
     mapErrorT,
     module Control.Monad,
     module Control.Monad.Fix,
@@ -51,7 +52,7 @@ module Control.Monad.Error (
 
 import Control.Monad.Error.Class
 import Control.Monad.Trans
-import Control.Monad.Trans.Error (ErrorT(..), mapErrorT)
+import Control.Monad.Trans.Error (ErrorT(ErrorT), runErrorT, mapErrorT)
 
 import Control.Monad
 import Control.Monad.Fix
diff --git a/Control/Monad/RWS/Lazy.hs b/Control/Monad/RWS/Lazy.hs
index f8eaaf7140f2b3527a5d2bb1c67a1b759f5f52be..1369145dcf6f8303c771f8a78bf406936b6194ca 100644
--- a/Control/Monad/RWS/Lazy.hs
+++ b/Control/Monad/RWS/Lazy.hs
@@ -27,7 +27,8 @@ module Control.Monad.RWS.Lazy (
     mapRWS,
     withRWS,
     -- * The RWST monad transformer
-    RWST(..),
+    RWST(RWST),
+    runRWST,
     evalRWST,
     execRWST,
     mapRWST,
@@ -45,7 +46,7 @@ import Control.Monad.RWS.Class
 import Control.Monad.Trans
 import Control.Monad.Trans.RWS.Lazy (
     RWS, rws, runRWS, evalRWS, execRWS, mapRWS, withRWS,
-    RWST(..), evalRWST, execRWST, mapRWST, withRWST)
+    RWST(RWST), runRWST, evalRWST, execRWST, mapRWST, withRWST)
 
 import Control.Monad
 import Control.Monad.Fix
diff --git a/Control/Monad/RWS/Strict.hs b/Control/Monad/RWS/Strict.hs
index 6afc4a60f3b22a19a117ede65af4d64e8e885169..59e98c6b3d59c4168efd527fcbd8e9bd3360136b 100644
--- a/Control/Monad/RWS/Strict.hs
+++ b/Control/Monad/RWS/Strict.hs
@@ -27,7 +27,8 @@ module Control.Monad.RWS.Strict (
     mapRWS,
     withRWS,
     -- * The RWST monad transformer
-    RWST(..),
+    RWST(RWST),
+    runRWST,
     evalRWST,
     execRWST,
     mapRWST,
@@ -45,7 +46,7 @@ import Control.Monad.RWS.Class
 import Control.Monad.Trans
 import Control.Monad.Trans.RWS.Strict (
     RWS, rws, runRWS, evalRWS, execRWS, mapRWS, withRWS,
-    RWST(..), evalRWST, execRWST, mapRWST, withRWST)
+    RWST(RWST), runRWST, evalRWST, execRWST, mapRWST, withRWST)
 
 import Control.Monad
 import Control.Monad.Fix
diff --git a/Control/Monad/Reader.hs b/Control/Monad/Reader.hs
index 82b2c602e94f47a2f682fc4ddbc1ffdbfe1d4a78..7f1039b331fcd830ce02ecfa6225f4b215736e35 100644
--- a/Control/Monad/Reader.hs
+++ b/Control/Monad/Reader.hs
@@ -45,7 +45,8 @@ module Control.Monad.Reader (
     mapReader,
     withReader,
     -- * The ReaderT monad transformer
-    ReaderT(..),
+    ReaderT(ReaderT),
+    runReaderT,
     mapReaderT,
     withReaderT,
     module Control.Monad,
@@ -65,7 +66,7 @@ import Control.Monad.Reader.Class
 
 import Control.Monad.Trans.Reader (
     Reader, runReader, mapReader, withReader,
-    ReaderT(..), mapReaderT, withReaderT)
+    ReaderT(ReaderT), runReaderT, mapReaderT, withReaderT)
 import Control.Monad.Trans
 
 import Control.Monad
diff --git a/Control/Monad/State/Lazy.hs b/Control/Monad/State/Lazy.hs
index a36fa9a05ce2811de45139c0c43cb853584cd940..8de31207a1554513948885b4d0762f7f11d1f719 100644
--- a/Control/Monad/State/Lazy.hs
+++ b/Control/Monad/State/Lazy.hs
@@ -32,7 +32,8 @@ module Control.Monad.State.Lazy (
     mapState,
     withState,
     -- * The StateT monad transformer
-    StateT(..),
+    StateT(StateT),
+    runStateT,
     evalStateT,
     execStateT,
     mapStateT,
@@ -49,7 +50,7 @@ import Control.Monad.State.Class
 import Control.Monad.Trans
 import Control.Monad.Trans.State.Lazy
         (State, runState, evalState, execState, mapState, withState,
-         StateT(..), evalStateT, execStateT, mapStateT, withStateT)
+         StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, withStateT)
 
 import Control.Monad
 import Control.Monad.Fix
diff --git a/Control/Monad/State/Strict.hs b/Control/Monad/State/Strict.hs
index f2ef5daae8b62132a751bbef45d4e83340f76db9..77c096bc4b4c8b402f96df0ca886fc4feed2d696 100644
--- a/Control/Monad/State/Strict.hs
+++ b/Control/Monad/State/Strict.hs
@@ -32,7 +32,8 @@ module Control.Monad.State.Strict (
     mapState,
     withState,
     -- * The StateT monad transformer
-    StateT(..),
+    StateT(StateT),
+    runStateT,
     evalStateT,
     execStateT,
     mapStateT,
@@ -49,7 +50,7 @@ import Control.Monad.State.Class
 import Control.Monad.Trans
 import Control.Monad.Trans.State.Strict
         (State, runState, evalState, execState, mapState, withState,
-         StateT(..), evalStateT, execStateT, mapStateT, withStateT)
+         StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, withStateT)
 
 import Control.Monad
 import Control.Monad.Fix
diff --git a/Control/Monad/Writer/Lazy.hs b/Control/Monad/Writer/Lazy.hs
index 28cd7e648bd25ffd3f21295877d606e938fd97b5..57267147f610aa78516725d6fdd4f6df9f958927 100644
--- a/Control/Monad/Writer/Lazy.hs
+++ b/Control/Monad/Writer/Lazy.hs
@@ -28,7 +28,8 @@ module Control.Monad.Writer.Lazy (
     execWriter,
     mapWriter,
     -- * The WriterT monad transformer
-    WriterT(..),
+    WriterT(WriterT),
+    runWriterT,
     execWriterT,
     mapWriterT,
     module Control.Monad,
@@ -42,7 +43,7 @@ import Control.Monad.Writer.Class
 import Control.Monad.Trans
 import Control.Monad.Trans.Writer.Lazy (
         Writer, runWriter, execWriter, mapWriter,
-        WriterT(..), execWriterT, mapWriterT)
+        WriterT(WriterT), runWriterT, execWriterT, mapWriterT)
 
 import Control.Monad
 import Control.Monad.Fix