diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+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)
+
+This package provides automated lifting of operations via functional
+dependencies for the [transformers-abort][transformers-abort] package.
+
+[transformers-abort]: http://hackage.haskell.org/package/transformers-abort
+
+Installation
+------------
+The usual:
+
+	$ cabal install
+
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
+Version: 0.6.1
 Category: Control
 Stability: experimental
 Synopsis: A better error monad transformer
@@ -16,8 +16,12 @@
 License: BSD3
 License-File: LICENSE
 
-Tested-With: GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
+Extra-Source-Files:
+  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
+
 Cabal-Version: >= 1.6.0
 Build-Type: Simple
 
@@ -32,6 +36,7 @@
                , transformers-base   >= 0.4
                , transformers-abort  >= 0.4
                , mtl                 >= 2.0
+               , stm                 >= 2.4
   Hs-Source-Dirs: src
   GHC-Options: -Wall
   Exposed-Modules:
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
@@ -41,6 +41,7 @@
 import qualified Control.Monad.RWS.Strict as S
 import Control.Monad.Trans.Abort (AbortT(..))
 import qualified Control.Monad.Trans.Abort as A
+import Control.Monad.STM (STM, throwSTM, catchSTM)
 
 -- | Class of monads that support raising of errors.
 class (Applicative μ, Monad μ) ⇒ MonadAbort e μ | μ → e where
@@ -97,6 +98,12 @@
 
 instance MonadRecover SomeException IO where
   recover = catch
+
+instance MonadAbort SomeException STM where
+  abort = throwSTM
+
+instance MonadRecover SomeException STM where
+  recover = catchSTM
 
 instance Monad μ ⇒ MonadError e (AbortT e μ) where
   throwError = A.abort
