diff --git a/Control/Monad/Ghc.hs b/Control/Monad/Ghc.hs
--- a/Control/Monad/Ghc.hs
+++ b/Control/Monad/Ghc.hs
@@ -64,6 +64,7 @@
 instance MonadCatch Ghc where
     catch   = GHC.gcatch
 
+instance MonadMask Ghc where
 #if __GLASGOW_HASKELL__ >= 700
     -- @gmask@ is available...
     -- ...but it doesn't have a rank-n type like @mask@, so we need
@@ -98,7 +99,7 @@
   pure  = return
   (<*>) = ap
 
-runGhcT :: (Functor m, MonadIO m, MonadCatch m) => Maybe FilePath -> GhcT m a -> m a
+runGhcT :: (Functor m, MonadIO m, MonadCatch m, MonadMask m) => Maybe FilePath -> GhcT m a -> m a
 runGhcT f = unMTLA . GHC.runGhcT f . unGhcT
 
 instance MTL.MonadTrans GhcT where
@@ -116,9 +117,10 @@
 instance MonadCatch m => MonadThrow (GhcT m) where
     throwM = lift . throwM
 
-instance (MonadIO m,MonadCatch m) => MonadCatch (GhcT m) where
+instance (MonadIO m,MonadCatch m, MonadMask m) => MonadCatch (GhcT m) where
     m `catch` f = GhcT ((unGhcT m) `GHC.gcatch` (unGhcT . f))
 
+instance (MonadIO m, MonadMask m) => MonadMask (GhcT m) where
     mask f = wrap $ \s ->
                mask $ \io_restore ->
                  unwrap (f $ \m -> (wrap $ \s' -> io_restore (unwrap m s'))) s
@@ -128,7 +130,7 @@
 
     uninterruptibleMask = mask
 
-instance (MonadIO m, MonadCatch m) => GHC.ExceptionMonad (GhcT m) where
+instance (MonadIO m, MonadCatch m, MonadMask m) => GHC.ExceptionMonad (GhcT m) where
     gcatch  = catch
 #if __GLASGOW_HASKELL__ >= 700
     gmask f = mask (\x -> f x)
@@ -143,7 +145,7 @@
     getWarnings = GhcT GHC.getWarnings
 #endif
 
-instance (Functor m, MonadIO m, MonadCatch m) => GHC.GhcMonad (GhcT m) where
+instance (Functor m, MonadIO m, MonadCatch m, MonadMask m) => GHC.GhcMonad (GhcT m) where
     getSession = GhcT GHC.getSession
     setSession = GhcT . GHC.setSession
 
@@ -156,7 +158,7 @@
     liftIO = MTLAdapter . MTL.liftIO
 
 
-instance (MonadIO m, MonadCatch m) => GHC.ExceptionMonad (MTLAdapter m) where
+instance (MonadIO m, MonadCatch m, MonadMask m) => GHC.ExceptionMonad (MTLAdapter m) where
   m `gcatch` f = MTLAdapter $ (unMTLA m) `catch` (unMTLA . f)
 
 #if __GLASGOW_HASKELL__ >= 700
diff --git a/ghc-mtl.cabal b/ghc-mtl.cabal
--- a/ghc-mtl.cabal
+++ b/ghc-mtl.cabal
@@ -1,5 +1,5 @@
 name:               ghc-mtl
-version:            1.2.0.0
+version:            1.2.1.0
 description:        Provides an 'mtl' compatible version of the 'GhcT'
                     monad-transformer defined in the 'GHC-API' since version
                     6.10.1.
@@ -11,16 +11,20 @@
 author:             Daniel Gorin
 maintainer:         jcpetruzza@gmail.com
 homepage:           http://hub.darcs.net/jcpetruzza/ghc-mtl
-
 cabal-version:      >= 1.6
 build-type:         Simple
 tested-with:        GHC==6.10
 
+source-repository   head
+  type: darcs
+  location: http://hub.darcs.net/jcpetruzza/ghc-mtl
+
+
 Library
   build-depends:      base >= 4, base <= 5,
                       ghc >= 6.10,
                       mtl,
-                      exceptions >= 0.4,
+                      exceptions >= 0.6,
                       extensible-exceptions
   exposed-modules:    Control.Monad.Ghc
   extensions:         GeneralizedNewtypeDeriving, CPP
