diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 Monad-Abort-FD
 ==============
 
-[![Travis](https://img.shields.io/travis/mvv/monad-abort-fd/master.svg)](https://travis-ci.org/mvv/monad-abort-fd) [![Hackage](https://img.shields.io/hackage/v/monad-abort-fd.svg)](http://hackage.haskell.org/package/monad-abort-fd)
+[![Build](https://github.com/mvv/monad-abort-fd/actions/workflows/ci.yml/badge.svg)](https://github.com/mvv/monad-abort-fd/actions/workflows/ci.yml) [![Hackage](https://img.shields.io/hackage/v/monad-abort-fd.svg)](http://hackage.haskell.org/package/monad-abort-fd)
 
 This package provides automated lifting of operations via functional
 dependencies for the [transformers-abort][transformers-abort] package.
diff --git a/monad-abort-fd.cabal b/monad-abort-fd.cabal
--- a/monad-abort-fd.cabal
+++ b/monad-abort-fd.cabal
@@ -1,5 +1,5 @@
 Name: monad-abort-fd
-Version: 0.7
+Version: 0.7.0.1
 Category: Control
 Stability: experimental
 Synopsis: A better error monad transformer
@@ -20,9 +20,10 @@
   README.md
 
 Tested-With: GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2,
-             GHC==8.4.1
+             GHC==8.4.4, GHC==8.6.5, GHC==8.8.4, GHC==8.10.7, GHC==9.0.2,
+             GHC==9.2.7, GHC==9.4.5, GHC==9.6.1
 
-Cabal-Version: >= 1.6.0
+Cabal-Version: >= 1.10.0
 Build-Type: Simple
 
 Source-Repository head
@@ -30,8 +31,9 @@
   Location: https://github.com/mvv/monad-abort-fd.git
 
 Library
-  Build-Depends: base >= 4.3 && < 5
-  Build-Depends: transformers        >= 0.2
+  Default-Language: Haskell2010
+  Build-Depends: base                >= 4.3 && < 5
+               , transformers        >= 0.2
                , transformers-compat >= 0.6.1
                , transformers-base   >= 0.4
                , transformers-abort  >= 0.4
diff --git a/src/Control/Monad/Abort/Class.hs b/src/Control/Monad/Abort/Class.hs
--- a/src/Control/Monad/Abort/Class.hs
+++ b/src/Control/Monad/Abort/Class.hs
@@ -26,8 +26,12 @@
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.Maybe
 import Control.Monad.Cont
+#if !MIN_VERSION_mtl(2,3,0)
 import Control.Monad.List
 import Control.Monad.Error
+#else
+import Control.Monad.Error.Class
+#endif
 import Control.Monad.Trans.Except
 import Control.Monad.Reader
 import Control.Monad.State (MonadState(..))
@@ -149,11 +153,13 @@
 instance MonadRecover e μ ⇒ MonadRecover e (MaybeT μ) where
   recover m h = MaybeT $ runMaybeT m `recover` (runMaybeT . h)
 
+#if !MIN_VERSION_mtl(2,3,0)
 instance MonadAbort e μ ⇒ MonadAbort e (ListT μ) where
   abort = lift . abort
 
 instance MonadRecover e μ ⇒ MonadRecover e (ListT μ) where
   recover m h = ListT $ runListT m `recover` (runListT . h)
+#endif
 
 instance MonadAbort e μ ⇒ MonadAbort e (ReaderT r μ) where
   abort = lift . abort
@@ -201,11 +207,13 @@
   recover m h = S.RWST $ \r s →
     S.runRWST m r s `recover` (\e → S.runRWST (h e) r s)
 
+#if !MIN_VERSION_mtl(2,3,0)
 instance (Functor μ, Monad μ, Error e) ⇒ MonadAbort e (ErrorT e μ) where
   abort = throwError
 
 instance (Functor μ, Monad μ, Error e) ⇒ MonadRecover e (ErrorT e μ) where
   recover = catchError
+#endif
 
 instance (Functor μ, Monad μ) ⇒ MonadAbort e (ExceptT e μ) where
   abort = throwError
diff --git a/src/Control/Monad/Finish/Class.hs b/src/Control/Monad/Finish/Class.hs
--- a/src/Control/Monad/Finish/Class.hs
+++ b/src/Control/Monad/Finish/Class.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UnicodeSyntax #-}
 {-# LANGUAGE TupleSections #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -15,9 +16,13 @@
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.Maybe
 import Control.Monad.Cont
-import Control.Monad.Error
 import Control.Monad.Trans.Except
+#if !MIN_VERSION_mtl(2,3,0)
 import Control.Monad.List
+import Control.Monad.Error
+#else
+import Control.Monad.Error.Class
+#endif
 import Control.Monad.Reader
 import Control.Monad.State (MonadState(..))
 import qualified Control.Monad.State.Lazy as L
@@ -79,8 +84,10 @@
 instance MonadFinish f μ ⇒ MonadFinish f (MaybeT μ) where
   finish = lift . finish
 
+#if !MIN_VERSION_mtl(2,3,0)
 instance (MonadFinish f μ, Error e) ⇒ MonadFinish f (ErrorT e μ) where
   finish = lift . finish
+#endif
 
 instance MonadFinish f μ ⇒ MonadFinish f (ExceptT e μ) where
   finish = lift . finish
@@ -88,8 +95,10 @@
 instance MonadFinish f μ ⇒ MonadFinish f (AbortT e μ) where
   finish = lift . finish
 
+#if !MIN_VERSION_mtl(2,3,0)
 instance MonadFinish f μ ⇒ MonadFinish f (ListT μ) where
   finish = lift . finish
+#endif
 
 instance MonadFinish f μ ⇒ MonadFinish f (ReaderT r μ) where
   finish = lift . finish
