diff --git a/pugs-compat.cabal b/pugs-compat.cabal
--- a/pugs-compat.cabal
+++ b/pugs-compat.cabal
@@ -1,5 +1,5 @@
 Name           : pugs-compat
-Version        : 0.0.6.1
+Version        : 0.0.6.2
 Build-type     : Simple
 Category       : Pugs
 License        : BSD3
@@ -16,8 +16,8 @@
                     TypeSynonymInstances, FlexibleInstances, PatternGuards,
                     UndecidableInstances, FlexibleContexts, OverlappingInstances, TypeOperators
 
-  Build-depends   : base >=3 && < 4, haskell98, time, directory, process, regex-pcre-builtin, regex-base,
-                    random, network, containers, bytestring, array, mtl, stm, utf8-string,
+  Build-depends   : base >=4 && < 5, haskell98, time, directory, process, regex-pcre-builtin, regex-base,
+                    random, network, containers, bytestring, array, mtl < 2.0.0.0, stm, utf8-string, syb,
                     stringtable-atom >= 0.0.6.1
   Exposed-modules : Pugs.Compat
   Other-modules   : Pugs.Compat.Cast Pugs.Compat.Global Pugs.Compat.ID
diff --git a/src/Pugs/Compat.hs b/src/Pugs/Compat.hs
--- a/src/Pugs/Compat.hs
+++ b/src/Pugs/Compat.hs
@@ -25,7 +25,7 @@
 
 import Control.Concurrent     as X 
 import Control.Concurrent.STM as X 
-import Control.Exception      as X (catchJust, errorCalls, Exception(..))
+import Control.Exception      as X (catchJust, Exception(..))
 import Control.Monad          as X (replicateM, forM, forM_, MonadPlus(..), msum, liftM2, liftM3, guard, foldM, unless, liftM, filterM, join, when)
 import Control.Monad.Error    as X (MonadError(..), ErrorT(..), Error(..))
 import Control.Monad.Fix      as X (fix)
diff --git a/src/Pugs/Compat/Monads.hs b/src/Pugs/Compat/Monads.hs
--- a/src/Pugs/Compat/Monads.hs
+++ b/src/Pugs/Compat/Monads.hs
@@ -87,7 +87,7 @@
        -> m (f b)    -- ^ Monad containing (@Just@ /result/) or @Nothing@
 maybeM f m = mapM m =<< f
 
-catchIO :: IO a -> (Control.Exception.Exception -> IO a) -> IO a
+catchIO :: Exception e => forall a. IO a -> (e -> IO a) -> IO a
 catchIO = Control.Exception.catch
 
 evaluateIO :: a -> IO a
