diff --git a/haskey-mtl.cabal b/haskey-mtl.cabal
--- a/haskey-mtl.cabal
+++ b/haskey-mtl.cabal
@@ -1,5 +1,5 @@
 name:                haskey-mtl
-version:             0.3.0.1
+version:             0.3.1.0
 synopsis:            A monad transformer supporting Haskey transactions.
 description:
     This library provides a monad transformer supporting Haskey transactions,
@@ -29,7 +29,9 @@
     mtl                     >=2.1  && <3,
     transformers            >=0.3  && <1,
     haskey-btree            >=0.3 && <0.4,
-    haskey                  >=0.3 && <0.4
+    haskey                  >=0.3 && <0.4,
+    monad-control           >=1.0.1.0 && <1.0.2.4,
+    transformers-base       >=0.4.4 && <0.5
 
   default-language:    Haskell2010
   ghc-options:         -Wall
diff --git a/src/Control/Monad/Haskey.hs b/src/Control/Monad/Haskey.hs
--- a/src/Control/Monad/Haskey.hs
+++ b/src/Control/Monad/Haskey.hs
@@ -2,6 +2,8 @@
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE UndecidableInstances #-}
 -- | A monad transformer supporting Haskey transactions.
 --
@@ -33,8 +35,13 @@
 import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
 import Control.Monad.Trans.Class (MonadTrans(..))
 
+import Control.Monad.Base (MonadBase(..))
 import Control.Monad.RWS (MonadRWS)
 import Control.Monad.State (MonadState(..))
+import Control.Monad.Trans.Control (MonadTransControl(..), MonadBaseControl(..),
+                                    ComposeSt(..), defaultLiftBaseWith,
+                                    defaultRestoreM, defaultLiftWith,
+                                    defaultRestoreT)
 import Control.Monad.Writer (MonadWriter(..))
 import qualified Control.Monad.RWS.Lazy as RWSL
 import qualified Control.Monad.RWS.Strict as RWSS
@@ -84,6 +91,18 @@
 
 instance MonadTrans (HaskeyT root) where
     lift = HaskeyT . lift
+
+deriving instance MonadBase IO m => MonadBase IO (HaskeyT root m)
+
+instance MonadTransControl (HaskeyT root) where
+    type StT (HaskeyT root) a = StT (ReaderT (ConcurrentDb root, FileStoreConfig)) a
+    liftWith = defaultLiftWith HaskeyT fromHaskeyT
+    restoreT = defaultRestoreT HaskeyT
+
+instance MonadBaseControl IO m => MonadBaseControl IO (HaskeyT root m) where
+    type StM (HaskeyT root m) a = ComposeSt (HaskeyT root) m a
+    liftBaseWith = defaultLiftBaseWith
+    restoreM     = defaultRestoreM
 
 -- | Run Haskey transactions, backed by a file store.
 runHaskeyT :: (Root root, MonadMask m, MonadIO m)
