diff --git a/Control/DeepSeq.hs b/Control/DeepSeq.hs
index 2b3fa29ecc05c80b3247b2fb3f6e928d7370feaf..88aa5c31adf019c13163ce2a7dae84aa72607977 100644
--- a/Control/DeepSeq.hs
+++ b/Control/DeepSeq.hs
@@ -1,4 +1,5 @@
-#ifdef __GLASGOW_HASKELL__
+{-# LANGUAGE CPP #-}
+#if __GLASGOW_HASKELL__ >= 702 && MIN_VERSION_array(0,4,0)
 {-# LANGUAGE Safe #-}
 #endif
 -----------------------------------------------------------------------------
diff --git a/deepseq.cabal b/deepseq.cabal
index f3a8b7d32125f3a557d9cbf578b459ffa4b66a8d..af91fa24fc756dba92f9a2752fb7533e01f3bf8d 100644
--- a/deepseq.cabal
+++ b/deepseq.cabal
@@ -20,17 +20,28 @@ description:
     components) which defines strategies for fully evaluating different
     data types.
     .
+    If you want to automatically derive 'NFData' instances via the
+    "GHC.Generics" facility, there is a companion package
+    <http://hackage.haskell.org/package/deepseq-generics deepseq-generics>
+    which builds on top of this package.
 build-type:     Simple
-cabal-version:  >=1.6
+cabal-version:  >=1.10
 
 source-repository head
-    type:     git
-    location: http://git.haskell.org/packages/deepseq.git
+  type:     git
+  location: http://git.haskell.org/packages/deepseq.git
 
-library {
+source-repository this
+  type:     git
+  location: http://git.haskell.org/packages/deepseq.git
+  tag:      bytestring-1.3.0.2-release
+
+library
+  default-language: Haskell98
+  other-extensions: CPP
+  if impl(ghc >= 7.2)
+    other-extensions: Safe
   exposed-modules: Control.DeepSeq
-  build-depends: base       >= 4.5 && < 5, 
-                 array      >= 0.1 && < 0.5
+  build-depends: base       >= 4.3 && < 4.8,
+                 array      >= 0.3 && < 0.6
   ghc-options: -Wall
-  extensions: CPP
-}