diff --git a/Control/Monad/Exception/Base.hs b/Control/Monad/Exception/Base.hs
--- a/Control/Monad/Exception/Base.hs
+++ b/Control/Monad/Exception/Base.hs
@@ -46,10 +46,12 @@
 -}
 module Control.Monad.Exception.Base where
 
+import qualified Control.Exception as CE
 import Control.Applicative
 import Control.Monad.Exception.Catch
 import Control.Monad.Loc
 import Control.Monad.Trans.Class
+import Control.Monad.IO.Class
 import Control.Failure
 import Control.Monad.Fix
 import Data.Typeable
@@ -263,3 +265,10 @@
 mapLeft :: (a -> b) -> Either a r -> Either b r
 mapLeft f (Left x)  = Left (f x)
 mapLeft _ (Right x) = Right x
+
+
+instance (Throws SomeException l, MonadIO m) => MonadIO (EMT l m) where
+  liftIO m = EMT (liftIO m') where
+      m' = liftM Right m
+            `CE.catch`
+           \(e::SomeException) -> return (Left ([], CheckedException e))
diff --git a/control-monad-exception.cabal b/control-monad-exception.cabal
--- a/control-monad-exception.cabal
+++ b/control-monad-exception.cabal
@@ -1,5 +1,5 @@
 name: control-monad-exception
-version: 0.10.2
+version: 0.10.3
 Cabal-Version:  >= 1.10
 build-type: Simple
 license: PublicDomain
