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.1
+Version: 0.6.2
 Category: Control
 Stability: experimental
 Synopsis: A better error monad transformer
@@ -32,7 +32,7 @@
 Library
   Build-Depends: base >= 4.3 && < 5
   Build-Depends: transformers        >= 0.2
-               , transformers-compat >= 0.5
+               , transformers-compat >= 0.6.1
                , transformers-base   >= 0.4
                , transformers-abort  >= 0.4
                , mtl                 >= 2.0
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
@@ -39,6 +39,8 @@
 import Control.Monad.RWS (MonadRWS)
 import qualified Control.Monad.RWS.Lazy as L
 import qualified Control.Monad.RWS.Strict as S
+import Control.Monad.Trans.Accum (AccumT(..), runAccumT)
+import Control.Monad.Trans.Select (SelectT(..))
 import Control.Monad.Trans.Abort (AbortT(..))
 import qualified Control.Monad.Trans.Abort as A
 import Control.Monad.STM (STM, throwSTM, catchSTM)
@@ -209,3 +211,12 @@
 
 instance (Functor μ, Monad μ) ⇒ MonadRecover e (ExceptT e μ) where
   recover = catchError
+
+instance (Monoid w, MonadAbort e μ) ⇒ MonadAbort e (AccumT w μ) where
+  abort = lift . abort
+
+instance (Monoid w, MonadRecover e μ) ⇒ MonadRecover e (AccumT w μ) where
+  recover m h = AccumT $ \w → runAccumT m w `recover` ((`runAccumT` w) . h)
+
+instance MonadAbort e μ ⇒ MonadAbort e (SelectT r μ) where
+  abort = lift . abort
