diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
-0.3.2: 28 Feb 2011: Adapted to work with mpfr 3.0.0, now depends on integer-simple
+0.3.3: 22 Dec 2011: Compiles with both integer-simple and integer-gmp (but mis-behaves with standard integer-gmp).
+0.3.2: 28 Feb 2011: Adapted to work with mpfr 3.0.0, now depends on integer-simple.
 0.3: 23 Sep 2009: Added mutable interface and removed some modules from the export list.
 0.2.2: 2 Sep 2009: Fixed a minor bug in internal handling.
 0.2.1: 25 Aug 2009: Fixed a serious bug in fromInteger conversion.
diff --git a/hmpfr.cabal b/hmpfr.cabal
--- a/hmpfr.cabal
+++ b/hmpfr.cabal
@@ -1,13 +1,15 @@
 name:                hmpfr
-version:             0.3.3
+version:             0.3.3.1
 synopsis:            Haskell binding to the MPFR library
 description:         Haskell binding to the MPFR library. This version is compatible
                      with MPFR 2.4.* and later and will not work with previous releases
                      of the MPFR library.
                      .
                      /Since MPFR uses GMP, this library features infrequent but serious errors/
-                     /with a ghc (at least <= 7.2.1) that has been compiled with integer-gmp./  
-                     /When using ghc, it is recommended to use one compiled with integer-simple./
+                     /with a ghc (at least <= 7.4.1) that has been compiled with the default integer-gmp./  
+                     /When using ghc, it is recommended to use one compiled with a modified integer-gmp,/
+                     /as described at http://code.google.com/p/hmpfr/wiki/GHCWithRenamedGMP, or/
+                     /with integer-simple, as described at http://code.google.com/p/hmpfr/wiki/GHCWithoutGMP./
                      .
                      The library includes both a pure and a mutable interface.
                      The mutable interface should have a lot less overhead 
@@ -18,7 +20,10 @@
 license:             BSD3
 license-file:        LICENSE
 Stability:           experimental
-tested-with:         GHC == 6.12.3, GHC == 7.2.1
+Tested-with:
+                GHC==6.12.3,
+                GHC==7.2.2,
+                GHC==7.4.1
 author:              Aleš Bizjak, Michal Konečný
 maintainer:          Michal Konečný <mikkonecny@gmail.com>
 Homepage:            http://code.google.com/p/hmpfr/
@@ -37,7 +42,7 @@
 source-repository this
   type:     mercurial
   location: https://code.google.com/p/hmpfr/
-  tag:      0.3.3
+  tag:      0.3.3.1
 
 
 flag use-integer-simple
diff --git a/src/Data/Number/MPFR/Assignment.hs b/src/Data/Number/MPFR/Assignment.hs
--- a/src/Data/Number/MPFR/Assignment.hs
+++ b/src/Data/Number/MPFR/Assignment.hs
@@ -20,7 +20,7 @@
 
 import Data.Number.MPFR.Arithmetic
 
-import Foreign.Storable
+--import Foreign.Storable
 
 #ifdef INTEGER_SIMPLE
 import GHC.Integer.Simple.Internals
diff --git a/src/Data/Number/MPFR/Comparison.hs b/src/Data/Number/MPFR/Comparison.hs
--- a/src/Data/Number/MPFR/Comparison.hs
+++ b/src/Data/Number/MPFR/Comparison.hs
@@ -38,6 +38,7 @@
     | isZero mp2             = Just . toEnum . (+ 1) . fromIntegral $ signum s
     | isInfinite mp1         = Just .compare s $ if isInfinite mp2 then s' else 0 
     | isInfinite mp2         = Just $ compare 0 s'
+    | otherwise              = Nothing
 
 cmpw       :: MPFR -> Word -> Maybe Ordering
 cmpw mp1 w = if isNaN mp1 then Nothing else Just (compare (unsafePerformIO go) 0)
diff --git a/src/Data/Number/MPFR/Internal.hs b/src/Data/Number/MPFR/Internal.hs
--- a/src/Data/Number/MPFR/Internal.hs
+++ b/src/Data/Number/MPFR/Internal.hs
@@ -16,8 +16,9 @@
 
 import Foreign.C(CInt, CLong, CULong, CDouble, withCString, peekCString)
 import Foreign.Marshal(alloca, peekArray)
-import Foreign(unsafePerformIO, peek, Ptr, nullPtr, mallocForeignPtrBytes, with, withForeignPtr)
+import Foreign(peek, Ptr, nullPtr, mallocForeignPtrBytes, with, withForeignPtr)
 import Foreign.Storable(sizeOf)
+import System.IO.Unsafe(unsafePerformIO)
 
 import Data.Bits(shiftL)
 
diff --git a/src/Data/Number/MPFR/Mutable/Internal.hs b/src/Data/Number/MPFR/Mutable/Internal.hs
--- a/src/Data/Number/MPFR/Mutable/Internal.hs
+++ b/src/Data/Number/MPFR/Mutable/Internal.hs
@@ -20,7 +20,8 @@
 
 import Data.STRef(STRef, readSTRef, writeSTRef, newSTRef)
 
-import Control.Monad.ST(ST, unsafeIOToST)
+import Control.Monad.ST(ST)
+import Control.Monad.ST.Unsafe(unsafeIOToST)
 
 import Foreign.Marshal.Utils(copyBytes)
 
