diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,8 @@
+0.2.0.1 (24 August 2014)
+------------------------
+
+  - Allow building with both transformers-0.3 and 0.4.
+
 0.2 (20 August 2014)
 --------------------
 
diff --git a/Control/Monad/Random.hs b/Control/Monad/Random.hs
--- a/Control/Monad/Random.hs
+++ b/Control/Monad/Random.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                        #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses      #-}
@@ -47,25 +48,28 @@
 
 import           Control.Applicative
 import           Control.Arrow
-import           Control.Monad                  ()
+import           Control.Monad                ()
 import           Control.Monad.Cont
-import           Control.Monad.Error
+#if MIN_VERSION_transformers(0,4,0)
 import           Control.Monad.Except
+#else
+import           Control.Monad.Error
+#endif
 import           Control.Monad.Identity
 import           Control.Monad.Random.Class
 import           Control.Monad.Reader
-import qualified Control.Monad.RWS.Lazy         as RWSL
-import qualified Control.Monad.RWS.Strict       as RWSS
+import qualified Control.Monad.RWS.Lazy       as RWSL
+import qualified Control.Monad.RWS.Strict     as RWSS
 import           Control.Monad.State
-import qualified Control.Monad.State.Lazy       as SL
-import qualified Control.Monad.State.Strict     as SS
-import           Control.Monad.Trans            ()
+import qualified Control.Monad.State.Lazy     as SL
+import qualified Control.Monad.State.Strict   as SS
+import           Control.Monad.Trans          ()
 import           Control.Monad.Trans.Identity
 import           Control.Monad.Trans.Maybe
 import           Control.Monad.Writer.Class
-import qualified Control.Monad.Writer.Lazy      as WL
-import qualified Control.Monad.Writer.Strict    as WS
-import           Data.Monoid                    (Monoid)
+import qualified Control.Monad.Writer.Lazy    as WL
+import qualified Control.Monad.Writer.Strict  as WS
+import           Data.Monoid                  (Monoid)
 import           System.Random
 
 -- | A monad transformer which adds a random number generator to an
@@ -199,13 +203,11 @@
     getRandoms = lift getRandoms
     getRandomRs = lift . getRandomRs
 
-instance (Error e, MonadRandom m) => MonadRandom (ErrorT e m) where
-    getRandom = lift getRandom
-    getRandomR = lift . getRandomR
-    getRandoms = lift getRandoms
-    getRandomRs = lift . getRandomRs
-
+#if MIN_VERSION_transformers(0,4,0)
 instance (MonadRandom m) => MonadRandom (ExceptT e m) where
+#else
+instance (Error e, MonadRandom m) => MonadRandom (ErrorT e m) where
+#endif
     getRandom = lift getRandom
     getRandomR = lift . getRandomR
     getRandoms = lift getRandoms
@@ -247,10 +249,11 @@
 instance (MonadSplit g m, Monoid w) => MonadSplit g (RWSS.RWST r w s m) where
     getSplit = lift getSplit
 
-instance (Error e, MonadSplit g m) => MonadSplit g (ErrorT e m) where
-    getSplit = lift getSplit
-
+#if MIN_VERSION_transformers(0,4,0)
 instance (MonadSplit g m) => MonadSplit g (ExceptT e m) where
+#else
+instance (Error e, MonadSplit g m) => MonadSplit g (ErrorT e m) where
+#endif
     getSplit = lift getSplit
 
 instance (MonadSplit g m) => MonadSplit g (MaybeT m) where
diff --git a/MonadRandom.cabal b/MonadRandom.cabal
--- a/MonadRandom.cabal
+++ b/MonadRandom.cabal
@@ -1,5 +1,5 @@
 name:                MonadRandom
-version:             0.2
+version:             0.2.0.1
 synopsis:            Random-number generation monad.
 description:         Support for computations which consume random values.
 license:             OtherLicense
@@ -17,6 +17,6 @@
 
 library
   exposed-modules:     Control.Monad.Random, Control.Monad.Random.Class
-  build-depends:       base >= 2 && < 5, transformers >= 0.4, mtl, random
+  build-depends:       base >= 2 && < 5, transformers >= 0.3 && < 0.5, mtl, random
   ghc-options:         -Wall
   default-language:    Haskell2010
