diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+5.5.2.1
+-------
+
+* Only create `NFData` instances for GHC >= 7.4.1.
+
 5.5.2.0
 -------
 
diff --git a/Data/Graph/Inductive/Internal/Heap.hs b/Data/Graph/Inductive/Internal/Heap.hs
--- a/Data/Graph/Inductive/Internal/Heap.hs
+++ b/Data/Graph/Inductive/Internal/Heap.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- | Pairing heap implementation of dictionary
 module Data.Graph.Inductive.Internal.Heap(
     -- * Type
@@ -10,15 +12,20 @@
     build, toList, heapsort
 ) where
 
+import Text.Show (showListWith)
+
+#if __GLASGOW_HASKELL__ >= 704
 import Control.DeepSeq (NFData (..))
-import Text.Show       (showListWith)
+#endif
 
 data Heap a b = Empty | Node a b [Heap a b]
      deriving (Eq, Show, Read)
 
+#if __GLASGOW_HASKELL__ >= 704
 instance (NFData a, NFData b) => NFData (Heap a b) where
   rnf Empty         = ()
   rnf (Node a b hs) = rnf a `seq` rnf b `seq` rnf hs
+#endif
 
 prettyHeap :: (Show a, Show b) => Heap a b -> String
 prettyHeap = (`showsHeap` "")
diff --git a/Data/Graph/Inductive/NodeMap.hs b/Data/Graph/Inductive/NodeMap.hs
--- a/Data/Graph/Inductive/NodeMap.hs
+++ b/Data/Graph/Inductive/NodeMap.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- | Utility methods to automatically generate and keep track of a mapping
 -- between node labels and 'Node's.
 module Data.Graph.Inductive.NodeMap(
@@ -24,7 +26,6 @@
     insMapEdgesM, delMapNodesM, delMapEdgesM
 ) where
 
-import           Control.DeepSeq            (NFData (..))
 import           Control.Monad.Trans.State
 import           Data.Graph.Inductive.Graph
 import           Prelude                    hiding (map)
@@ -33,13 +34,19 @@
 import           Data.Map (Map)
 import qualified Data.Map as M
 
+#if __GLASGOW_HASKELL__ >= 704
+import Control.DeepSeq (NFData (..))
+#endif
+
 data NodeMap a =
     NodeMap { map :: Map a Node,
               key :: Int }
     deriving (Eq, Show, Read)
 
+#if __GLASGOW_HASKELL__ >= 704
 instance (NFData a) => NFData (NodeMap a) where
   rnf (NodeMap mp k) = rnf mp `seq` rnf k
+#endif
 
 -- | Create a new, empty mapping.
 new :: NodeMap a
diff --git a/Data/Graph/Inductive/PatriciaTree.hs b/Data/Graph/Inductive/PatriciaTree.hs
--- a/Data/Graph/Inductive/PatriciaTree.hs
+++ b/Data/Graph/Inductive/PatriciaTree.hs
@@ -29,13 +29,17 @@
 
 import           Control.Applicative (liftA2)
 import           Control.Arrow       (second)
-import           Control.DeepSeq     (NFData (..))
 import           Data.IntMap         (IntMap)
 import qualified Data.IntMap         as IM
 import           Data.List           (sort)
 import           Data.Maybe          (fromMaybe)
+
+#if __GLASGOW_HASKELL__ >= 704
+import Control.DeepSeq (NFData (..))
+#endif
+
 #if __GLASGOW_HASKELL__ >= 702
-import           GHC.Generics        (Generic)
+import GHC.Generics (Generic)
 #endif
 
 ----------------------------------------------------------------------
@@ -111,8 +115,10 @@
               !g3 = addPred g2 v s
           in Gr g3
 
+#if __GLASGOW_HASKELL__ >= 704
 instance (NFData a, NFData b) => NFData (Gr a b) where
   rnf (Gr g) = rnf g
+#endif
 
 matchGr :: Node -> Gr a b -> Decomp Gr a b
 matchGr node (Gr g)
diff --git a/Data/Graph/Inductive/Tree.hs b/Data/Graph/Inductive/Tree.hs
--- a/Data/Graph/Inductive/Tree.hs
+++ b/Data/Graph/Inductive/Tree.hs
@@ -15,13 +15,17 @@
 
 import           Control.Applicative (liftA2)
 import           Control.Arrow       (first, second)
-import           Control.DeepSeq     (NFData (..))
 import           Data.List           (foldl', sort)
 import           Data.Map            (Map)
 import qualified Data.Map            as M
 import           Data.Maybe          (fromMaybe)
+
+#if __GLASGOW_HASKELL__ >= 704
+import Control.DeepSeq (NFData (..))
+#endif
+
 #if __GLASGOW_HASKELL__ >= 702
-import           GHC.Generics        (Generic)
+import GHC.Generics (Generic)
 #endif
 
 ----------------------------------------------------------------------
@@ -121,8 +125,10 @@
                        (const (error ("Node Exception, Node: "++show v)))
       cntxt' = (p,l,s)
 
+#if __GLASGOW_HASKELL__ >= 704
 instance (NFData a, NFData b) => NFData (Gr a b) where
   rnf (Gr g) = rnf g
+#endif
 
 ----------------------------------------------------------------------
 -- UTILITIES
diff --git a/fgl.cabal b/fgl.cabal
--- a/fgl.cabal
+++ b/fgl.cabal
@@ -1,5 +1,5 @@
 name:          fgl
-version:       5.5.2.0
+version:       5.5.2.1
 license:       BSD3
 license-file:  LICENSE
 author:        Martin Erwig, Ivan Lazar Miljenovic
@@ -60,7 +60,10 @@
                     , transformers
                     , containers
                     , array
-                    , deepseq >= 1.1.0.0 && < 1.5.0.0
+
+    if impl(ghc >= 7.4)
+       build-depends:
+            deepseq >= 1.1.0.0 && < 1.5.0.0
 
     if impl(ghc >= 7.2) && impl(ghc < 7.6)
         build-depends:
