diff --git a/MonadCatchIO-transformers.cabal b/MonadCatchIO-transformers.cabal
--- a/MonadCatchIO-transformers.cabal
+++ b/MonadCatchIO-transformers.cabal
@@ -1,5 +1,5 @@
 Name:            MonadCatchIO-transformers
-Version:         0.2.0.0
+Version:         0.2.1.0
 Cabal-Version:   >= 1.6
 License:         PublicDomain
 Description:
diff --git a/src/Control/Monad/CatchIO.hs b/src/Control/Monad/CatchIO.hs
--- a/src/Control/Monad/CatchIO.hs
+++ b/src/Control/Monad/CatchIO.hs
@@ -20,13 +20,14 @@
 import           Control.Applicative        ((<$>))
 import qualified Control.Exception.Extensible as E
 
-import           Control.Monad.IO.Class     (MonadIO,liftIO)  
-import           Control.Monad.Trans.Error  (ErrorT          ,runErrorT ,mapErrorT ,Error)
-import           Control.Monad.Trans.Reader (ReaderT(ReaderT),runReaderT,mapReaderT)
-import           Control.Monad.Trans.State  (StateT(StateT)  ,runStateT ,mapStateT )
-import           Control.Monad.Trans.Writer (WriterT(WriterT),runWriterT,mapWriterT)
-import           Control.Monad.Trans.RWS    (RWST(RWST)      ,runRWST   ,mapRWST   )
-import           Data.Monoid                (Monoid)
+import           Control.Monad.IO.Class           (MonadIO,liftIO)  
+import           Control.Monad.Trans.Error        (ErrorT          ,runErrorT ,mapErrorT ,Error)
+import           Control.Monad.Trans.Reader       (ReaderT(ReaderT),runReaderT,mapReaderT)
+import           Control.Monad.Trans.State        (StateT(StateT)  ,runStateT ,mapStateT )
+import qualified Control.Monad.Trans.State.Strict as StrictState
+import           Control.Monad.Trans.Writer       (WriterT(WriterT),runWriterT,mapWriterT)
+import           Control.Monad.Trans.RWS          (RWST(RWST)      ,runRWST   ,mapRWST   )
+import           Data.Monoid                      (Monoid)
 
 
 class MonadIO m => MonadCatchIO m where
@@ -54,6 +55,11 @@
   m `catch` f = StateT $ \s -> runStateT m s `catch` \e -> runStateT (f e) s
   block       = mapStateT block
   unblock     = mapStateT unblock
+
+instance MonadCatchIO m => MonadCatchIO (StrictState.StateT s m) where
+  m `catch` f = StrictState.StateT $ \s -> StrictState.runStateT m s `catch` \e -> StrictState.runStateT (f e) s
+  block       = StrictState.mapStateT block
+  unblock     = StrictState.mapStateT unblock
 
 instance (MonadCatchIO m, Error e) => MonadCatchIO (ErrorT e m) where
   m `catch` f = mapErrorT (\m' -> m' `catch` \e -> runErrorT $ f e) m
