diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,9 +1,20 @@
+0.6 (5 Nov 2022)
+----------------
+
+- Remove instances for deprecated `ErrorT` and `ListT` transformers
+- Allow building with `transformers-0.6` and `mtl-2.3.1`
+- Drop support for GHC 7.6 and 7.8
+
 0.5.3 (8 April 2021)
 --------------------
 
 - `StatefulGen` instances for `RandT`
 - Addition of `RandGen`
 - Additioon of `withRandGen` and `withRandGen_`
+
+- r1 (28 April 2021): require `base >= 4.6`
+- r2 (9 Aug 2021): allow `transformers-compat-0.7`.
+- r3 (9 Aug 2022): Test with GHC 9.0-9.4
 
 0.5.2 (24 June 2020)
 --------------------
diff --git a/Control/Monad/Random/Class.hs b/Control/Monad/Random/Class.hs
--- a/Control/Monad/Random/Class.hs
+++ b/Control/Monad/Random/Class.hs
@@ -54,10 +54,8 @@
 import           Control.Monad
 import           Control.Monad.Trans.Class
 import           Control.Monad.Trans.Cont
-import           Control.Monad.Trans.Error
 import           Control.Monad.Trans.Except
 import           Control.Monad.Trans.Identity
-import           Control.Monad.Trans.List
 import           Control.Monad.Trans.Maybe
 import           Control.Monad.Trans.Reader
 import qualified Control.Monad.Trans.RWS.Lazy      as LazyRWS
@@ -130,12 +128,6 @@
   getRandomRs = lift . getRandomRs
   getRandoms  = lift getRandoms
 
-instance (Error e, MonadRandom m) => MonadRandom (ErrorT e m) where
-  getRandomR  = lift . getRandomR
-  getRandom   = lift getRandom
-  getRandomRs = lift . getRandomRs
-  getRandoms  = lift getRandoms
-
 instance (MonadRandom m) => MonadRandom (ExceptT e m) where
   getRandomR  = lift . getRandomR
   getRandom   = lift getRandom
@@ -148,12 +140,6 @@
   getRandomRs = lift . getRandomRs
   getRandoms  = lift getRandoms
 
-instance (MonadRandom m) => MonadRandom (ListT m) where
-  getRandomR  = lift . getRandomR
-  getRandom   = lift getRandom
-  getRandomRs = lift . getRandomRs
-  getRandoms  = lift getRandoms
-
 instance (MonadRandom m) => MonadRandom (MaybeT m) where
   getRandomR  = lift . getRandomR
   getRandom   = lift getRandom
@@ -227,18 +213,12 @@
 instance (MonadSplit g m) => MonadSplit g (ContT r m) where
   getSplit = lift getSplit
 
-instance (Error e, MonadSplit g m) => MonadSplit g (ErrorT e m) where
-  getSplit = lift getSplit
-
 instance (MonadSplit g m) => MonadSplit g (ExceptT e m) where
   getSplit = lift getSplit
 
 instance (MonadSplit g m) => MonadSplit g (IdentityT m) where
   getSplit = lift getSplit
 
-instance (MonadSplit g m) => MonadSplit g (ListT m) where
-  getSplit = lift getSplit
-
 instance (MonadSplit g m) => MonadSplit g (MaybeT m) where
   getSplit = lift getSplit
 
@@ -318,17 +298,11 @@
 instance (MonadInterleave m) => MonadInterleave (ContT r m) where
   interleave = mapContT interleave
 
-instance (Error e, MonadInterleave m) => MonadInterleave (ErrorT e m) where
-  interleave = mapErrorT interleave
-
 instance (MonadInterleave m) => MonadInterleave (ExceptT e m) where
   interleave = mapExceptT interleave
 
 instance (MonadInterleave m) => MonadInterleave (IdentityT m) where
   interleave = mapIdentityT interleave
-
-instance (MonadInterleave m) => MonadInterleave (ListT m) where
-  interleave = mapListT interleave
 
 instance (MonadInterleave m) => MonadInterleave (MaybeT m) where
   interleave = mapMaybeT interleave
diff --git a/Control/Monad/Trans/Random/Lazy.hs b/Control/Monad/Trans/Random/Lazy.hs
--- a/Control/Monad/Trans/Random/Lazy.hs
+++ b/Control/Monad/Trans/Random/Lazy.hs
@@ -56,27 +56,28 @@
     -- $examples
   ) where
 
-import           Control.Applicative
-import           Control.Arrow                  (first)
-import           Control.Monad
-import           Control.Monad.Cont.Class
-import           Control.Monad.Error.Class
-import qualified Control.Monad.Fail             as Fail
-import           Control.Monad.Fix
-import           Control.Monad.IO.Class
-import           Control.Monad.Primitive
-import           Control.Monad.Random.Class
-import           Control.Monad.RWS.Class
-import           Control.Monad.Signatures
-import           Control.Monad.Trans.Class
+import Control.Applicative ( Alternative )
+import Control.Arrow (first)
+import Control.Monad ( liftM, MonadPlus )
+import Control.Monad.Cont.Class (MonadCont(..))
+import Control.Monad.Error.Class ( MonadError(..) )
+import qualified Control.Monad.Fail as Fail
+import Control.Monad.Fix ( MonadFix )
+import Control.Monad.IO.Class ( MonadIO(..) )
+import Control.Monad.Primitive ( PrimMonad(..) )
+import Control.Monad.Random.Class ( MonadInterleave(..), MonadSplit(..), MonadRandom(..) )
+import Control.Monad.RWS.Class ( MonadState(..), MonadRWS, MonadReader, MonadWriter )
+import Control.Monad.Signatures ( Listen, Pass, CallCC, Catch )
+import Control.Monad.Trans.Class ( MonadTrans(..) )
 import qualified Control.Monad.Trans.State.Lazy as LazyState
-import           Control.Monad.Trans.Random.Strict (RandGen(..))
-import           Data.Functor.Identity
+import Control.Monad.Trans.Random.Strict (RandGen(..))
+import Data.Functor.Identity ( Identity(runIdentity) )
 #if MIN_VERSION_random(1,2,0)
 import           System.Random.Stateful
 #else
 import           System.Random
 #endif
+
 -- | A random monad parameterized by the type @g@ of the generator to carry.
 --
 -- The 'return' function leaves the generator unchanged, while '>>=' uses the
diff --git a/Control/Monad/Trans/Random/Strict.hs b/Control/Monad/Trans/Random/Strict.hs
--- a/Control/Monad/Trans/Random/Strict.hs
+++ b/Control/Monad/Trans/Random/Strict.hs
@@ -57,21 +57,21 @@
     -- $examples
   ) where
 
-import           Control.Applicative
-import           Control.Arrow                    (first)
-import           Control.Monad
-import           Control.Monad.Cont.Class
-import           Control.Monad.Error.Class
+import Control.Applicative ( Alternative )
+import Control.Arrow (first)
+import Control.Monad ( liftM, MonadPlus )
+import Control.Monad.Cont.Class (MonadCont(..))
+import Control.Monad.Error.Class ( MonadError(..) )
 import qualified Control.Monad.Fail               as Fail
-import           Control.Monad.Fix
-import           Control.Monad.IO.Class
-import           Control.Monad.Primitive
-import           Control.Monad.Random.Class
-import           Control.Monad.RWS.Class
-import           Control.Monad.Signatures
-import           Control.Monad.Trans.Class
+import Control.Monad.Fix ( MonadFix )
+import Control.Monad.IO.Class ( MonadIO(..) )
+import Control.Monad.Primitive ( PrimMonad(..) )
+import Control.Monad.Random.Class ( MonadInterleave(..), MonadSplit(..), MonadRandom(..) )
+import Control.Monad.RWS.Class ( MonadState(..), MonadRWS, MonadReader, MonadWriter )
+import Control.Monad.Signatures ( Listen, Pass, CallCC, Catch )
+import Control.Monad.Trans.Class ( MonadTrans(..) )
 import qualified Control.Monad.Trans.State.Strict as StrictState
-import           Data.Functor.Identity
+import Data.Functor.Identity ( Identity(runIdentity) )
 #if MIN_VERSION_random(1,2,0)
 import           System.Random.Stateful
 #else
diff --git a/MonadRandom.cabal b/MonadRandom.cabal
--- a/MonadRandom.cabal
+++ b/MonadRandom.cabal
@@ -1,5 +1,5 @@
 name:                MonadRandom
-version:             0.5.3
+version:             0.6
 synopsis:            Random-number generation monad.
 description:         Support for computations which consume random values.
 license:             BSD3
@@ -11,7 +11,7 @@
 build-type:          Simple
 cabal-version:       >=1.10
 extra-source-files:  CHANGES.markdown
-tested-with:         GHC ==7.6.3 || ==7.8.4 || ==7.10.3 || ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.3 || ==8.10.1
+tested-with:         GHC ==7.10.3 || ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.4 || ==9.4.2
 
 source-repository head
   type:     git
@@ -27,14 +27,15 @@
     Control.Monad.Trans.Random.Lazy,
     Control.Monad.Trans.Random.Strict
   build-depends:
-    base                >=2   && <5,
-    transformers        >=0.3 && <0.6,
-    transformers-compat >=0.4 && <0.7,
-    mtl                 >=2.1 && <2.3,
+    base                >=4.6 && <5,
+    transformers        >=0.4 && <0.7,
+    transformers-compat >=0.4 && <0.8,
+    mtl                 >=2.2.1 && <2.3 || >= 2.3.1 && < 2.4,
     primitive           >=0.6 && <0.8,
     random              >=1.0 && <1.3
   ghc-options:         -Wall
   default-language:    Haskell2010
+  other-extensions:    Safe
 
   if impl(ghc < 8.0)
     build-depends: fail >= 4.9
