diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,14 @@
+# Version 0.2
+
+* Rename 'grnf' to 'grnfDefault'.
+
+* Export 'RepGNFData'
+
+* Export 'GNFData' internals.
+
+* Relax dependencies.
+
+
 # Version 0.1.0.1
 
 * Raise upper bound on `instant-generics` dependency.
diff --git a/instant-deepseq.cabal b/instant-deepseq.cabal
--- a/instant-deepseq.cabal
+++ b/instant-deepseq.cabal
@@ -1,11 +1,14 @@
 name:                instant-deepseq
-version:             0.1.0.1
+version:             0.2
 author:              Renzo Carbonara
 maintainer:          renzo@carbonara.com.ar
 copyright:           Renzo Carbonara 2015
 license:             BSD3
 license-file:        LICENSE.txt
-category:            Web
+stability:           Experimental
+homepage:            https://github.com/k0001/instant-deepseq
+bug-reports:         https://github.com/k0001/instant-deepseq/issues
+category:            Generics
 build-type:          Simple
 extra-source-files:  README.md CHANGELOG.md
 cabal-version:       >=1.18
@@ -17,8 +20,8 @@
   exposed-modules:
       Generics.Instant.Functions.DeepSeq
   build-depends:
-      deepseq >=1.4 && <1.5
-    , base >=4.8 && <4.9
+      deepseq >=1.3 && <1.5
+    , base >=4.7 && <4.9
     , instant-generics >=0.4 && <0.6
   ghcjs-options: -Wall -O3
   ghc-options: -Wall -O2
diff --git a/src/lib/Generics/Instant/Functions/DeepSeq.hs b/src/lib/Generics/Instant/Functions/DeepSeq.hs
--- a/src/lib/Generics/Instant/Functions/DeepSeq.hs
+++ b/src/lib/Generics/Instant/Functions/DeepSeq.hs
@@ -4,12 +4,14 @@
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE UndecidableInstances #-}
 
 module Generics.Instant.Functions.DeepSeq
   ( -- $defaults
-    grnf
+    grnfDefault
+  , RepGNFData
     -- * Internals
-  , GNFData
+  , GNFData(..)
   ) where
 
 import           Control.DeepSeq (NFData(rnf))
@@ -18,47 +20,53 @@
 --------------------------------------------------------------------------------
 -- $defaults
 --
--- You can use 'grnf' as your generic 'rnf' for any 'Representable' type as
--- follows:
+-- You can use 'grnfDefault' as your generic 'rnf' for any 'Representable' type
+-- as follows:
 --
 -- @
--- instance 'NFData' MyType where rnf = 'grnf'
+-- instance 'NFData' MyType where rnf = 'grnfDefault'
 -- @
 
-grnf :: (Representable a, GNFData (Rep a)) => a -> ()
-grnf = \a -> grnf' (from a)
-{-# INLINABLE grnf #-}
+grnfDefault :: (Representable a, GNFData (Rep a)) => a -> ()
+grnfDefault = \a -> grnf (from a)
+{-# INLINABLE grnfDefault #-}
 
+-- | @'RepGNFData'@ is simply a synonym for
+-- @('Representable' a, 'GNFData' ('Rep' a))@ with the convenient
+-- kind @(* -> 'GHC.Exts.Constraint')@
+class (Representable a, GNFData (Rep a)) => RepGNFData a
+instance (Representable a, GNFData (Rep a)) => RepGNFData a
+
 --------------------------------------------------------------------------------
 
 class GNFData a where
-  grnf' :: a -> ()
+  grnf :: a -> ()
 
 instance GNFData Z where
-  grnf' _ = error
-    "Generics.Instant.Functions.DeepSeq.GNFData Z grnf' - impossible"
+  grnf _ = error
+    "Generics.Instant.Functions.DeepSeq.GNFData Z grnf - impossible"
 
 instance GNFData U where
-  grnf' !U = ()
-  {-# INLINABLE grnf' #-}
+  grnf !U = ()
+  {-# INLINABLE grnf #-}
 
 instance GNFData a => GNFData (CEq c p q a) where
-  grnf' !(C a) = grnf' a `seq` ()
-  {-# INLINABLE grnf' #-}
+  grnf !(C a) = grnf a `seq` ()
+  {-# INLINABLE grnf #-}
 
 instance (GNFData a, GNFData b) => GNFData (a :*: b) where
-  grnf' !(a :*: b) = grnf' a `seq` grnf' b `seq` ()
-  {-# INLINABLE grnf' #-}
+  grnf !(a :*: b) = grnf a `seq` grnf b `seq` ()
+  {-# INLINABLE grnf #-}
 
 instance (GNFData a, GNFData b) => GNFData (a :+: b) where
-  grnf' !(L a) = grnf' a `seq` ()
-  grnf' !(R b) = grnf' b `seq` ()
-  {-# INLINABLE grnf' #-}
+  grnf !(L a) = grnf a `seq` ()
+  grnf !(R b) = grnf b `seq` ()
+  {-# INLINABLE grnf #-}
 
 instance NFData a => GNFData (Var a) where
-  grnf' !(Var a) = rnf a `seq` ()
-  {-# INLINABLE grnf' #-}
+  grnf !(Var a) = rnf a `seq` ()
+  {-# INLINABLE grnf #-}
 
 instance NFData a => GNFData (Rec a) where
-  grnf' !(Rec a) = rnf a `seq` ()
-  {-# INLINABLE grnf' #-}
+  grnf !(Rec a) = rnf a `seq` ()
+  {-# INLINABLE grnf #-}
