diff --git a/Posixutil/ChildProcess.hs b/Posixutil/ChildProcess.hs
--- a/Posixutil/ChildProcess.hs
+++ b/Posixutil/ChildProcess.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE ScopedTypeVariables #-}
 -- |
 -- Description: Calling other programs.
 --
@@ -338,7 +339,8 @@
 -- | Waits for the ChildProcess to exit or be terminated
 waitForChildProcess :: ChildProcess -> IO ChildProcessStatus
 waitForChildProcess p =
-  Exception.catch (waitForChild p) (\_ -> return ChildTerminated)
+  Exception.catch (waitForChild p)
+    (\ (_ :: Exception.SomeException) -> return ChildTerminated)
   where
     waitForChild p = do
       exitCode <- waitForProcess (processHandle p)
diff --git a/Posixutil/CopyFile.hs b/Posixutil/CopyFile.hs
--- a/Posixutil/CopyFile.hs
+++ b/Posixutil/CopyFile.hs
@@ -99,10 +99,7 @@
 copyFileToStringCheck :: FilePath -> IO (WithError String)
 copyFileToStringCheck filePath =
    exceptionToError
-      (\ exception ->
-         case ioErrors exception of
-         Nothing -> Nothing
-         Just ioError ->
+      (\ ioError ->
             if IO.isDoesNotExistError ioError
             then
                Just "File does not exist"
@@ -126,10 +123,7 @@
 copyFileToICStringLenCheck :: FilePath -> IO (WithError ICStringLen)
 copyFileToICStringLenCheck filePath =
    exceptionToError
-      (\ exception ->
-         case ioErrors exception of
-            Nothing -> Nothing
-            Just ioError -> Just (show ioError)
+      (\ ioError -> Just $ show (ioError :: IOException)
          )
       (copyFileToICStringLen filePath)
 
@@ -166,10 +160,7 @@
 copyStringToFileCheck :: String -> FilePath -> IO (WithError ())
 copyStringToFileCheck str filePath =
    exceptionToError
-      (\ exception ->
-         case ioErrors exception of
-            Nothing -> Nothing
-            Just ioError -> Just (show ioError)
+      (\ ioError -> Just $ show (ioError :: IOException)
          )
       (copyStringToFile str filePath)
 
diff --git a/uni-posixutil.cabal b/uni-posixutil.cabal
--- a/uni-posixutil.cabal
+++ b/uni-posixutil.cabal
@@ -1,5 +1,5 @@
 name:           uni-posixutil
-version:        2.2.0.0
+version:        2.2.1.0
 build-type:     Simple
 license:        LGPL
 license-file:   LICENSE
@@ -10,7 +10,7 @@
 synopsis:       Posix utilities for the uniform workbench
 description:    posix utilities
 cabal-version:  >= 1.4
-tested-with:    GHC==6.8.3, GHC==6.10.4, GHC==6.12.3
+tested-with:    GHC==6.10.4, GHC==6.12.3
 
 library
   exposed-modules:
@@ -21,7 +21,7 @@
     Posixutil.BlockSigPIPE
 
   build-depends:
-        base >=3 && < 4,
+        base >=4 && < 5,
         directory,
         process,
         uni-util,
@@ -32,5 +32,4 @@
   else
      build-Depends: unix
 
-  if impl(ghc > 6.10)
-    ghc-options: -fwarn-unused-imports -fno-warn-warnings-deprecations
+  ghc-options: -fwarn-unused-imports -fno-warn-warnings-deprecations
