diff --git a/Control/Monad/Exception.hs b/Control/Monad/Exception.hs
--- a/Control/Monad/Exception.hs
+++ b/Control/Monad/Exception.hs
@@ -8,7 +8,7 @@
 -- |
 -- Module      :  Control.Monad.Exception
 -- Copyright   :  (c) Harvard University 2008-2011
---                (c) Geoffrey Mainland 2011-2016
+--                (c) Geoffrey Mainland 2011-2021
 -- License     :  BSD-style
 -- Maintainer  :  mainland@cs.drexel.edu
 
@@ -40,22 +40,33 @@
                                          finally)
 import qualified Control.Exception as E (mask)
 import Control.Monad (MonadPlus(..))
+#if !MIN_VERSION_base(4,13,0)
+import Control.Monad.Fail
+#endif /* !MIN_VERSION_base(4,13,0) */
+#if !MIN_VERSION_base(4,11,0)
+import qualified Control.Monad.Fail as Fail
+#endif /* !MIN_VERSION_base(4,11,0) */
 import Control.Monad.Fix (MonadFix(..))
 import Control.Monad.IO.Class (MonadIO(..))
 import Control.Monad.Trans.Class (MonadTrans(..))
+
+#if !MIN_VERSION_transformers(0,6,0)
 import Control.Monad.Trans.Error (Error(..),
                                   ErrorT(..),
                                   mapErrorT,
                                   runErrorT)
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 import Control.Monad.Trans.Except (ExceptT(..),
                                    mapExceptT,
                                    runExceptT)
 import Control.Monad.Trans.Identity (IdentityT(..),
                                      mapIdentityT,
                                      runIdentityT)
+#if !MIN_VERSION_transformers(0,6,0)
 import Control.Monad.Trans.List (ListT(..),
                                  mapListT,
                                  runListT)
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 import Control.Monad.Trans.Maybe (MaybeT(..),
                                   mapMaybeT,
                                   runMaybeT)
@@ -207,9 +218,7 @@
     fail = Fail.fail
 #endif /* !MIN_VERSION_base(4,11,0) */
 
-#if MIN_VERSION_base(4,13,0)
 instance (Monad m) => MonadFail (ExceptionT m) where
-#endif
     fail msg = ExceptionT $ return (Left (E.toException (userError msg)))
 
 instance (Monad m) => MonadPlus (ExceptionT m) where
@@ -280,6 +289,7 @@
 -- MonadException instances for transformers.
 --
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance (MonadException m, Error e) =>
     MonadException (ErrorT e m) where
     throw       = lift . throw
@@ -287,6 +297,7 @@
 
     act `finally` sequel =
         mapErrorT (\act' -> act' `finally` runErrorT sequel) act
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance (MonadException m) =>
     MonadException (ExceptT e' m) where
@@ -301,10 +312,12 @@
     throw       = lift . throw
     m `catch` h = mapIdentityT (\m' -> m' `catch` \e -> runIdentityT (h e)) m
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance MonadException m =>
     MonadException (ListT m) where
     throw       = lift . throw
     m `catch` h = mapListT (\m' -> m' `catch` \e -> runListT (h e)) m
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance (MonadException m) =>
     MonadException (MaybeT m) where
@@ -360,10 +373,12 @@
 -- MonadAsyncException instances for transformers.
 --
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance (MonadAsyncException m, Error e) =>
     MonadAsyncException (ErrorT e m) where
     mask act = ErrorT $ mask $ \restore ->
                runErrorT $ act (mapErrorT restore)
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance (MonadAsyncException m) =>
     MonadAsyncException (ExceptT e' m) where
@@ -375,10 +390,12 @@
     mask act = IdentityT $ mask $ \restore ->
                runIdentityT $ act (mapIdentityT restore)
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance (MonadAsyncException m) =>
     MonadAsyncException (ListT m) where
     mask act = ListT $ mask $ \restore ->
                runListT $ act (mapListT restore)
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance (MonadAsyncException m) =>
     MonadAsyncException (MaybeT m) where
diff --git a/exception-transformers.cabal b/exception-transformers.cabal
--- a/exception-transformers.cabal
+++ b/exception-transformers.cabal
@@ -1,5 +1,5 @@
 name:           exception-transformers
-version:        0.4.0.10
+version:        0.4.0.11
 cabal-version:  >= 1.10
 license:        BSD3
 license-file:   LICENSE
@@ -15,9 +15,9 @@
                 transformer that support unchecked extensible exceptions as
                 well as asynchronous exceptions. It is compatible with
                 the transformers package.
-tested-with:    GHC==7.4.2, GHC==7.6.3, GHC==7.8.3, GHC==7.10.3, GHC==8.0.2,
-                GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.4, GHC==8.10.4,
-                GHC==9.0.1
+tested-with:    GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2,
+                GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.4, GHC==8.10.7,
+                GHC==9.0.1, GHC==9.2.1
 
 build-type:     Simple
 
@@ -29,7 +29,8 @@
 
   build-depends:
     base                >= 4   && < 5,
-    transformers        >= 0.2 && < 0.6,
+    fail                >= 4   && < 5,
+    transformers        >= 0.2 && < 0.7,
     transformers-compat >= 0.3 && < 0.8
 
   ghc-options:
@@ -48,7 +49,7 @@
     test-framework         >= 0.8 && < 0.9,
     test-framework-hunit   >= 0.3 && < 0.4,
     transformers           >= 0.2 && < 0.6,
-    transformers-compat    >= 0.3 && < 0.7
+    transformers-compat    >= 0.3 && < 0.8
 
   ghc-options:
     -Wall
