diff --git a/c2hs.cabal b/c2hs.cabal
--- a/c2hs.cabal
+++ b/c2hs.cabal
@@ -1,5 +1,5 @@
 Name:           c2hs
-Version:        0.16.3
+Version:        0.16.4
 License:        GPL-2
 License-File:   COPYING
 Copyright:      Copyright (c) 1999-2007 Manuel M T Chakravarty
@@ -18,7 +18,7 @@
                 hsch2s), this ensures that C functions are imported with the
                 correct Haskell types.
 Category:       Development
-Tested-With:    GHC==6.10.4, GHC==6.12.1
+Tested-With:    GHC==6.12.3, GHC==7.0.4, GHC==7.6.1
 Cabal-Version:  >= 1.6
 Build-Type:     Simple
 
diff --git a/src/C2HS/Config.hs b/src/C2HS/Config.hs
--- a/src/C2HS/Config.hs
+++ b/src/C2HS/Config.hs
@@ -37,7 +37,7 @@
 ) where
 
 import Foreign  (toBool)
-import Foreign.C (CInt)
+import Foreign.C (CInt(..))
 import System.Info (arch, os)
 
 -- program settings
diff --git a/src/C2HS/Gen/Bind.hs b/src/C2HS/Gen/Bind.hs
--- a/src/C2HS/Gen/Bind.hs
+++ b/src/C2HS/Gen/Bind.hs
@@ -2259,7 +2259,9 @@
 resMarshIllegalInErr pos  =
   raiseErrorCTExc pos
     ["Malformed result marshalling!",
-     "There may not be an \"in\" marshaller for the result."]
+     "An \"in\" marshaller is not allowed for the function result type.",
+     "Note that \"out\" marshallers are specified *after* the type, like:",
+     " {# fun ... -> `MyType' mkMyType #} "]
 
 resMarshIllegalTwoCValErr     :: Position -> GB a
 resMarshIllegalTwoCValErr pos  =
diff --git a/src/Control/StateTrans.hs b/src/Control/StateTrans.hs
--- a/src/Control/StateTrans.hs
+++ b/src/Control/StateTrans.hs
@@ -73,6 +73,8 @@
                    throwExc, fatal, catchExc, fatalsHandledBy)
 where
 
+import Control.Exception (catch)
+import Prelude hiding (catch)
 
 -- BEWARE! You enter monad country. Read any of Wadler's or
 -- Launchbury/Peyton-Jones' texts before entering. Otherwise,
diff --git a/tests/system/Calls.chs b/tests/system/Calls.chs
--- a/tests/system/Calls.chs
+++ b/tests/system/Calls.chs
@@ -20,7 +20,7 @@
 	  -- test typedef'ed args without argument variable in prototype
 	  {#call printString2#} {# call pure MyString as myString #}
 
-{#fun foo as fooFun {} -> `Int'#}
+{#fun foo as fooFun {} -> id `Int'#}
 
 {#fun pure bar as barFun {`Int'} -> `Float'#}
 
