diff --git a/higher-leveldb.cabal b/higher-leveldb.cabal
--- a/higher-leveldb.cabal
+++ b/higher-leveldb.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                higher-leveldb
-version:             0.3.1.0
+version:             0.4.0.0
 synopsis:            A rich monadic API for working with leveldb databases.
 description:         A rich monadic API for working with leveldb databases.
 homepage:            https://github.com/jeremyjh/higher-leveldb
@@ -26,16 +26,17 @@
   -- other-modules:       
   hs-source-dirs:      src
   build-depends:       base == 4.*
-                       , cereal  >= 0.4 && < 0.6
-                       , lifted-base >= 0.2.1.1 && < 0.3
-                       , leveldb-haskell >= 0.2 && <= 0.7
-                       , bytestring >= 0.10 && < 0.11
-                       , resourcet       >=  1.1.0 && <= 1.2
-                       , transformers-base >= 0.4.1 && < 0.5
-                       , mtl >= 2.0 && < 2.3
-                       , monad-control >= 0.3 && < 1.1
-                       , data-default >= 0.5.1 && < 0.8
-                       , transformers >= 0.3 && < 0.6
+                     , bytestring >= 0.10 && < 0.11
+                     , cereal  >= 0.4 && < 0.6
+                     , data-default >= 0.5.1 && < 0.8
+                     , exceptions >= 0.6.0
+                     , leveldb-haskell >= 0.2 && <= 0.7
+                     , lifted-base >= 0.2.1.1 && < 0.3
+                     , monad-control >= 0.3 && < 1.1
+                     , mtl >= 2.0 && < 2.3
+                     , resourcet       >=  1.1.0 && <= 1.2
+                     , transformers >= 0.3 && < 0.6
+                     , transformers-base >= 0.4.1 && < 0.5
 
 
 test-suite spec
diff --git a/src/Database/LevelDB/Higher.hs b/src/Database/LevelDB/Higher.hs
--- a/src/Database/LevelDB/Higher.hs
+++ b/src/Database/LevelDB/Higher.hs
@@ -69,6 +69,8 @@
     hiding (put, get, delete, write, withSnapshot)
 import           Control.Monad.Trans.Resource
 import           Control.Monad.Trans.Control
+import           Control.Monad.Catch               (MonadCatch (..)
+                                                   , MonadMask (..))
 
 
 #if MIN_VERSION_mtl(2,2,1)
@@ -77,6 +79,7 @@
 import qualified Control.Monad.Trans.Error as Error
 #endif
 
+
 import qualified Control.Monad.Trans.Cont          as Cont
 import qualified Control.Monad.Trans.Identity      as Identity
 import qualified Control.Monad.Trans.List          as List
@@ -128,7 +131,7 @@
                      , dbcSyncMV :: MVar Word32
                      , dbcRWOptions :: RWOptions
                      }
-instance Show (DBContext) where
+instance Show DBContext where
     show = (<>) "KeySpaceID: " . show . dbcKsId
 
 -- | LevelDBT Transformer provides a context for database operations
@@ -150,6 +153,23 @@
 
 instance (MonadResourceBase m) => MonadResource (LevelDBT m) where
     liftResourceT = LevelDBT . liftResourceT
+
+instance MonadCatch m => MonadCatch (LevelDBT m) where
+    catch (LevelDBT m) c =
+      LevelDBT . ReaderT $ \r -> runReaderT m r `catch` \e -> runReaderT (unLevelDBT (c e)) r
+
+instance MonadMask m => MonadMask (LevelDBT m) where
+    mask a = LevelDBT . ReaderT $ \e -> mask $ \u -> runReaderT (unLevelDBT (a $ q u)) e
+      where
+        q ::  (ResourceT m a -> ResourceT m a) -> LevelDBT m a -> LevelDBT m a
+        q u (LevelDBT (ReaderT b)) =
+          LevelDBT $ ReaderT (u . b)
+    uninterruptibleMask a =
+      LevelDBT . ReaderT $ \e -> uninterruptibleMask $ \u -> runReaderT (unLevelDBT (a $ q u)) e
+      where
+        q ::  (ResourceT m a -> ResourceT m a) -> LevelDBT m a -> LevelDBT m a
+        q u (LevelDBT (ReaderT b)) =
+          LevelDBT $ ReaderT (u . b)
 
 #if MIN_VERSION_monad_control(1,0,0)
 instance MonadTransControl LevelDBT where
