diff --git a/fclabels.cabal b/fclabels.cabal
--- a/fclabels.cabal
+++ b/fclabels.cabal
@@ -1,5 +1,5 @@
 Name:          fclabels
-Version:       1.1.5
+Version:       1.1.6
 Author:        Sebastiaan Visser, Erik Hesselink, Chris Eidhof, Sjoerd Visscher
                with lots of help and feedback from others.
 Synopsis:      First class accessor labels.
@@ -20,11 +20,14 @@
                .
                See the "Data.Label.Maybe" module for the use of partial labels.
                .
-               > 1.1.4.3 -> 1.1.5
-               >   - Added `modifyAndGet` helper function.
-               >     Thanks to Nikita Volkov.
+               > 1.1.5 -> 1.1.6
+               >   - Exposed generic TH derive function.
+               >     Thanks to Bram Schuur.
 
 Maintainer:    Sebastiaan Visser <code@fvisser.nl>
+Homepage:      https://github.com/sebastiaanvisser/fclabels
+Bug-Reports:   http://github.com/sebastiaanvisser/fclabels/issues
+
 License:       BSD3
 License-File:  LICENSE
 Category:      Data, Lenses
@@ -34,11 +37,10 @@
 Library
   HS-Source-Dirs: src
 
-  Other-Modules:
-    Data.Label.Derive
   Exposed-Modules:
     Data.Label
     Data.Label.Abstract
+    Data.Label.Derive
     Data.Label.Maybe
     Data.Label.MaybeM
     Data.Label.Pure
diff --git a/src/Data/Label/Derive.hs b/src/Data/Label/Derive.hs
--- a/src/Data/Label/Derive.hs
+++ b/src/Data/Label/Derive.hs
@@ -13,6 +13,8 @@
 , mkLabelsWith
 , mkLabelsMono
 , mkLabelsNoTypes
+, defaultMakeLabel
+, gDerive
 ) where
 
 import Control.Arrow
@@ -72,9 +74,11 @@
 -- Helpers to generate all labels for one datatype.
 
 derive1 :: (String -> String) -> Bool -> Bool -> Name -> Q [Dec]
-derive1 makeLabel signatures concrete datatype =
- do i <- reify datatype
-    let -- Only process data and newtype declarations, filter out all
+derive1 makeLabel signatures concrete = reify >=> gDerive makeLabel signatures concrete
+
+gDerive :: (String -> String) -> Bool -> Bool -> Info -> Q [Dec]
+gDerive makeLabel signatures concrete i =
+ do let -- Only process data and newtype declarations, filter out all
         -- constructors and the type variables.
         (tyname, cons, vars) =
           case i of
