diff --git a/Type/Eq.hs b/Type/Eq.hs
--- a/Type/Eq.hs
+++ b/Type/Eq.hs
@@ -25,10 +25,10 @@
 --import Data.Groupoid            (Groupoid(..))
 --import Data.Semigroupoid        (Semigroupoid(..))
 import Data.Typeable     (Typeable, gcast)
-#if !(MIN_VERSION_base(4, 7, 0))
+#if __GLASGOW_HASKELL__ < 707
 import Data.Typeable     (Typeable2, typeOf2, mkTyConApp)
 #endif
-#if MIN_VERSION_base(4, 4, 0)
+#if __GLASGOW_HASKELL__ >= 701
 import Data.Typeable     (mkTyCon3)
 #else
 import Data.Typeable     (mkTyCon)
@@ -45,7 +45,7 @@
 --   are very useful for working with values of type @Maybe (a :~: b)@.
 data a :~: b where
     Eq :: (a ~ b) => a :~: b
-#if !(MIN_VERSION_base(4, 7, 0))
+#if __GLASGOW_HASKELL__ < 707
 -- deriving Typeable and PolyKinds don't play well
 instance Typeable2 (:~:) where
     typeOf2 = const $ mkTyConApp tyCon []
diff --git a/Type/Eq/Higher.hs b/Type/Eq/Higher.hs
--- a/Type/Eq/Higher.hs
+++ b/Type/Eq/Higher.hs
@@ -14,7 +14,7 @@
 
 module Type.Eq.Higher (module Type.Eq, module Type.Eq.Higher) where
 
-#if MIN_VERSION_base(4,7,0)
+#if __GLASGOW_HASKELL__ >= 707
 import Data.OldTypeable hiding (cast)
 #else
 import Data.Typeable hiding (cast)
diff --git a/Type/Eq/Poly.hs b/Type/Eq/Poly.hs
--- a/Type/Eq/Poly.hs
+++ b/Type/Eq/Poly.hs
@@ -19,7 +19,7 @@
 
 import Control.Applicative ((<$>))
 import Control.Category ((.)) -- for haddock
-#if MIN_VERSION_base(4,7,0)
+#if __GLASGOW_HASKELL__ >= 707
 import Data.OldTypeable hiding (cast)
 #else
 import Data.Typeable hiding (cast)
diff --git a/macros.h b/macros.h
--- a/macros.h
+++ b/macros.h
@@ -31,7 +31,11 @@
                 type2 = const undefined;                                                             \
             }
 
-#if MIN_VERSION_base(4,4,0)
+#ifndef __GLASGOW_HASKELL__
+#   error "GHC is required"
+#endif
+
+#if __GLASGOW_HASKELL__ >= 701
 #   define MK_TY_CON(MOD, CON) mkTyCon3 "type-eq" MOD CON
 #else
 #   define MK_TY_CON(MOD, CON) mkTyCon ("type-eq::" ++ MOD ++ "." ++ CON)
@@ -39,25 +43,25 @@
 
 -- http://hackage.haskell.org/trac/ghc/ticket/5591
 -- should be fixed in 7.8, but still having problems! TODO look into this later
-#if (__GLASGOW_HASKELL__ >= 702) && (__GLASGOW_HASKELL__ <= 708)
+#if (__GLASGOW_HASKELL__ >= 701)
 #   define BUG_5591(X) (unsafeCoerce X)
 #else
 #   define BUG_5591(X) X
 #endif
 
-#if (__GLASGOW_HASKELL__ >= 702)
+#if (__GLASGOW_HASKELL__ >= 701)
 #   define LANGUAGE_TRUSTWORTHY {-# LANGUAGE Trustworthy #-}
 #else
 #   define LANGUAGE_TRUSTWORTHY
 #endif
 
-#if (__GLASGOW_HASKELL__ >= 704)
+#if (__GLASGOW_HASKELL__ >= 703)
 #   define LANGUAGE_UNSAFE    {-# LANGUAGE Unsafe #-}
 #else
 #   define LANGUAGE_UNSAFE
 #endif
 
-#if (__GLASGOW_HASKELL__ >= 706)
+#if (__GLASGOW_HASKELL__ >= 705)
 #   define LANGUAGE_POLYKINDS {-# LANGUAGE PolyKinds #-}
 #else
 #   define LANGUAGE_POLYKINDS
diff --git a/type-eq.cabal b/type-eq.cabal
--- a/type-eq.cabal
+++ b/type-eq.cabal
@@ -1,6 +1,6 @@
 name:          type-eq
 category:      Type System
-version:       0.4.1
+version:       0.4.2
 author:        Gábor Lehel
 maintainer:    Gábor Lehel <glaebhoerl@gmail.com>
 homepage:      http://github.com/glaebhoerl/type-eq
