diff --git a/haskell-mpi.cabal b/haskell-mpi.cabal
--- a/haskell-mpi.cabal
+++ b/haskell-mpi.cabal
@@ -1,5 +1,5 @@
 name:                haskell-mpi
-version:             1.2.0
+version:             1.2.1
 cabal-version:       >= 1.6
 synopsis:            Distributed parallel programming in Haskell using MPI.
 description:
@@ -114,7 +114,6 @@
       src
    build-depends:
       base > 3 && <= 5,
-      haskell98,
       bytestring,
       cereal,
       extensible-exceptions,
diff --git a/src/C2HS.hs b/src/C2HS.hs
--- a/src/C2HS.hs
+++ b/src/C2HS.hs
@@ -4,19 +4,19 @@
 --
 --  Redistribution and use in source and binary forms, with or without
 --  modification, are permitted provided that the following conditions are met:
--- 
+--
 --  1. Redistributions of source code must retain the above copyright notice,
---     this list of conditions and the following disclaimer. 
+--     this list of conditions and the following disclaimer.
 --  2. Redistributions in binary form must reproduce the above copyright
 --     notice, this list of conditions and the following disclaimer in the
---     documentation and/or other materials provided with the distribution. 
+--     documentation and/or other materials provided with the distribution.
 --  3. The name of the author may not be used to endorse or promote products
---     derived from this software without specific prior written permission. 
+--     derived from this software without specific prior written permission.
 --
 --  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 --  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 --  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
---  NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+--  NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 --  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 --  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 --  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
@@ -28,7 +28,7 @@
 --
 --  Language: Haskell 98
 --
---  This module provides the marshaling routines for Haskell files produced by 
+--  This module provides the marshaling routines for Haskell files produced by
 --  C->Haskell for binding to C library interfaces.  It exports all of the
 --  low-level FFI (language-independent plus the C-specific parts) together
 --  with the C->HS-specific higher-level marshalling routines.
@@ -36,11 +36,11 @@
 
 module C2HS (
 
-  -- * Re-export the language-independent component of the FFI 
+  -- * Re-export the language-independent component of the FFI
   module Foreign,
 
   -- * Re-export the C language component of the FFI
-  module CForeign,
+  module Foreign.C,
 
   -- * Composite marshalling functions
   withCStringLenIntConv, peekCStringLenIntConv, withIntConv, withFloatConv,
@@ -54,16 +54,16 @@
 
   -- * Conversion between C and Haskell types
   cIntConv, cFloatConv, cToBool, cFromBool, cToEnum, cFromEnum
-) where 
+) where
 
 
 import Foreign
        hiding       (Word)
 		    -- Should also hide the Foreign.Marshal.Pool exports in
 		    -- compilers that export them
-import CForeign
+import Foreign.C
 
-import Monad        (liftM)
+import Control.Monad        (liftM)
 
 
 -- Composite marshalling functions
@@ -79,19 +79,19 @@
 -- Marshalling of numerals
 --
 
-withIntConv   :: (Storable b, Integral a, Integral b) 
+withIntConv   :: (Storable b, Integral a, Integral b)
 	      => a -> (Ptr b -> IO c) -> IO c
 withIntConv    = with . cIntConv
 
-withFloatConv :: (Storable b, RealFloat a, RealFloat b) 
+withFloatConv :: (Storable b, RealFloat a, RealFloat b)
 	      => a -> (Ptr b -> IO c) -> IO c
 withFloatConv  = with . cFloatConv
 
-peekIntConv   :: (Storable a, Integral a, Integral b) 
+peekIntConv   :: (Storable a, Integral a, Integral b)
 	      => Ptr a -> IO b
 peekIntConv    = liftM cIntConv . peek
 
-peekFloatConv :: (Storable a, RealFloat a, RealFloat b) 
+peekFloatConv :: (Storable a, RealFloat a, RealFloat b)
 	      => Ptr a -> IO b
 peekFloatConv  = liftM cFloatConv . peek
 
@@ -179,7 +179,7 @@
 --   produced.
 --
 extractBitMasks :: (Bits a, Enum b, Bounded b) => a -> [b]
-extractBitMasks bits = 
+extractBitMasks bits =
   [bm | bm <- [minBound..maxBound], bits `containsBitMask` bm]
 
 
@@ -196,7 +196,7 @@
 cFloatConv :: (RealFloat a, RealFloat b) => a -> b
 cFloatConv  = realToFrac
 -- As this conversion by default goes via `Rational', it can be very slow...
-{-# RULES 
+{-# RULES
   "cFloatConv/Float->Float"   forall (x::Float).  cFloatConv x = x;
   "cFloatConv/Double->Double" forall (x::Double). cFloatConv x = x
  #-}
@@ -208,7 +208,7 @@
 
 -- |Obtain Haskell 'Bool' from C value.
 --
-cToBool :: Num a => a -> Bool
+cToBool :: Eq a => Num a => a -> Bool
 cToBool  = toBool
 
 -- |Convert a C enumeration to Haskell.
diff --git a/test/CompileRunClean.hs b/test/CompileRunClean.hs
--- a/test/CompileRunClean.hs
+++ b/test/CompileRunClean.hs
@@ -22,7 +22,7 @@
 
 module Main where
 
-import System (getArgs)
+import System.Environment (getArgs)
 import System.Cmd (system)
 import System.Exit (ExitCode (..), exitWith)
 import Control.Monad (when)
