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.6.2
+Version: 0.7
 Category: Control
 Stability: experimental
 Synopsis: A better error monad transformer
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
@@ -43,6 +43,7 @@
 import Control.Monad.Trans.Select (SelectT(..))
 import Control.Monad.Trans.Abort (AbortT(..))
 import qualified Control.Monad.Trans.Abort as A
+import Control.Monad.Trans.Finish (FinishT(..))
 import Control.Monad.STM (STM, throwSTM, catchSTM)
 
 -- | Class of monads that support raising of errors.
@@ -220,3 +221,9 @@
 
 instance MonadAbort e μ ⇒ MonadAbort e (SelectT r μ) where
   abort = lift . abort
+
+instance MonadAbort e μ ⇒ MonadAbort e (FinishT f μ) where
+  abort = lift . abort
+
+instance MonadRecover e μ ⇒ MonadRecover e (FinishT f μ) where
+  recover m h = FinishT $ recover (runFinishT m) (runFinishT . h)
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
@@ -51,12 +51,6 @@
   throwError = lift . throwError
   catchError m h = FinishT $ catchError (runFinishT m) (runFinishT . h)
 
-instance MonadAbort e μ ⇒ MonadAbort e (FinishT f μ) where
-  abort = lift . abort
-
-instance MonadRecover e μ ⇒ MonadRecover e (FinishT f μ) where
-  recover m h = FinishT $ recover (runFinishT m) (runFinishT . h)
-
 instance MonadReader r μ ⇒ MonadReader r (FinishT f μ) where
   ask = lift ask
   local f = FinishT . local f . runFinishT
