diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+5.5.2.2
+-------
+
+* Ensure firing of specialised rules for `PatriciaTree`.
+
+* Better way of only creating `NFData` instances when possible.
+
 5.5.2.1
 -------
 
diff --git a/Data/Graph/Inductive/Graph.hs b/Data/Graph/Inductive/Graph.hs
--- a/Data/Graph/Inductive/Graph.hs
+++ b/Data/Graph/Inductive/Graph.hs
@@ -186,22 +186,26 @@
 -- | Map a function over the graph.
 gmap :: (DynGraph gr) => (Context a b -> Context c d) -> gr a b -> gr c d
 gmap f = ufold (\c->(f c&)) empty
+{-# NOINLINE [0] gmap #-}
 
 -- | Map a function over the 'Node' labels in a graph.
 nmap :: (DynGraph gr) => (a -> c) -> gr a b -> gr c b
 nmap f = gmap (\(p,v,l,s)->(p,v,f l,s))
+{-# NOINLINE [0] nmap #-}
 
 -- | Map a function over the 'Edge' labels in a graph.
 emap :: (DynGraph gr) => (b -> c) -> gr a b -> gr a c
 emap f = gmap (\(p,v,l,s)->(map1 f p,v,l,map1 f s))
   where
     map1 g = map (first g)
+{-# NOINLINE [0] emap #-}
 
 -- | Map functions over both the 'Node' and 'Edge' labels in a graph.
 nemap :: (DynGraph gr) => (a -> c) -> (b -> d) -> gr a b -> gr c d
 nemap fn fe = gmap (\(p,v,l,s) -> (fe' p,v,fn l,fe' s))
   where
     fe' = map (first fe)
+{-# NOINLINE [0] nemap #-}
 
 -- | List all 'Node's in the 'Graph'.
 nodes :: (Graph gr) => gr a b -> [Node]
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
@@ -14,7 +14,7 @@
 
 import Text.Show (showListWith)
 
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_containers (0,4,2)
 import Control.DeepSeq (NFData (..))
 #endif
 
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
@@ -34,7 +34,7 @@
 import           Data.Map (Map)
 import qualified Data.Map as M
 
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_containers (0,4,2)
 import Control.DeepSeq (NFData (..))
 #endif
 
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
@@ -34,7 +34,7 @@
 import           Data.List           (sort)
 import           Data.Maybe          (fromMaybe)
 
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_containers (0,4,2)
 import Control.DeepSeq (NFData (..))
 #endif
 
@@ -184,6 +184,15 @@
   where
     f' :: Context' a b -> Context' a c
     f' (ps, a, ss) = (IM.map (map f) ps, a, IM.map (map f) ss)
+
+{-# RULES
+      "nemap/Data.Graph.Inductive.PatriciaTree"  nemap = fastNEMap
+  #-}
+fastNEMap :: forall a b c d. (a -> c) -> (b -> d) -> Gr a b -> Gr c d
+fastNEMap fn fe (Gr g) = Gr (IM.map f g)
+  where
+    f :: Context' a b -> Context' c d
+    f (ps, a, ss) = (IM.map (map fe) ps, fn a, IM.map (map fe) ss)
 
 ----------------------------------------------------------------------
 -- UTILITIES
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
@@ -20,7 +20,7 @@
 import qualified Data.Map            as M
 import           Data.Maybe          (fromMaybe)
 
-#if __GLASGOW_HASKELL__ >= 704
+#if MIN_VERSION_containers (0,4,2)
 import Control.DeepSeq (NFData (..))
 #endif
 
diff --git a/fgl.cabal b/fgl.cabal
--- a/fgl.cabal
+++ b/fgl.cabal
@@ -1,5 +1,5 @@
 name:          fgl
-version:       5.5.2.1
+version:       5.5.2.2
 license:       BSD3
 license-file:  LICENSE
 author:        Martin Erwig, Ivan Lazar Miljenovic
@@ -17,10 +17,18 @@
 extra-source-files:
                ChangeLog
 
+tested-with:   GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4,
+               GHC == 7.10.2, GHC == 7.11.*
+
 source-repository head
     type:         git
     location:     git://github.com/haskell/fgl.git
 
+flag containers042 {
+    manual:  False
+    default: True
+}
+
 library {
     default-language: Haskell98
 
@@ -58,12 +66,13 @@
 
     build-depends:    base < 5
                     , transformers
-                    , containers
                     , array
 
-    if impl(ghc >= 7.4)
-       build-depends:
-            deepseq >= 1.1.0.0 && < 1.5.0.0
+    if flag(containers042)
+        build-depends:    containers >= 0.4.2
+                        , deepseq >= 1.1.0.0 && < 1.5
+    else
+        build-depends:    containers < 0.4.2
 
     if impl(ghc >= 7.2) && impl(ghc < 7.6)
         build-depends:
@@ -81,7 +90,7 @@
     build-depends:    fgl
                     , base
                     , QuickCheck >= 2.8 && < 2.9
-                    , hspec == 2.1.*
+                    , hspec >= 2.1 && < 2.3
                     , containers
 
     hs-source-dirs:   test
