diff --git a/Changelog b/Changelog
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,10 @@
+2010-08-05  Mathieu Boespflug  <mboes@tweag.net>
+
+	* Support for contexts in datatypes, thanks to Ben Millwood.
+	* deriveLiftWith becomes deriveLift' and takes an Info structure
+	rather than a custom reification function.
+	* Add deriveLiftMany to derive many Lift instances in one go.
+
 2010-08-02  Mathieu Boespflug  <mboes@tweag.net>
 
 	* Add support for newtypes and records syntax, thanks to a patch
diff --git a/Language/Haskell/TH/Lift.hs b/Language/Haskell/TH/Lift.hs
--- a/Language/Haskell/TH/Lift.hs
+++ b/Language/Haskell/TH/Lift.hs
@@ -1,33 +1,43 @@
-module Language.Haskell.TH.Lift (deriveLift, deriveLiftWith, Lift(..)) where
+module Language.Haskell.TH.Lift (deriveLift, deriveLiftMany, deriveLift', deriveLiftMany', Lift(..)) where
 
 import GHC.Exts
 import Language.Haskell.TH
 import Language.Haskell.TH.Syntax
+import Control.Monad ((<=<))
 
 modName :: String
 modName = "Language.Haskell.TH.Lift"
 
 -- | Derive Lift instances for the given datatype.
 deriveLift :: Name -> Q [Dec]
-deriveLift = deriveLiftWith reify
+deriveLift = deriveLift' <=< reify
 
+-- | Derive Lift instances for many datatypes.
+deriveLiftMany :: [Name] -> Q [Dec]
+deriveLiftMany = deriveLiftMany' <=< mapM reify
+
 -- | Obtain Info values through a custom reification function. This is useful
 -- when generating instances for datatypes that have not yet been declared.
-deriveLiftWith :: (Name -> Q Info) -> Name -> Q [Dec]
-deriveLiftWith n = do
-  i <- reify n
+deriveLift' :: Info -> Q [Dec]
+deriveLift' = fmap (:[]) . deriveLiftOne
+
+deriveLiftMany' :: [Info] -> Q [Dec]
+deriveLiftMany' = mapM deriveLiftOne
+
+deriveLiftOne :: Info -> Q Dec
+deriveLiftOne i =
   case i of
-    TyConI (DataD _ _ vsk cons _) ->
-      liftInstance (map unTyVarBndr vsk) (map doCons cons)
-    TyConI (NewtypeD _ _ vsk con _) ->
-      liftInstance (map unTyVarBndr vsk) [doCons con]
+    TyConI (DataD dcx n vsk cons _) ->
+      liftInstance dcx n (map unTyVarBndr vsk) (map doCons cons)
+    TyConI (NewtypeD dcx n vsk con _) ->
+      liftInstance dcx n (map unTyVarBndr vsk) [doCons con]
     _ -> error (modName ++ ".deriveLift: unhandled: " ++ pprint i)
-    where liftInstance vs cases =
-            fmap (:[]) $ instanceD (ctxt vs) (conT ''Lift `appT` typ vs) [funD 'lift cases]
-          unTyVarBndr (PlainTV v) = v
-          unTyVarBndr (KindedTV v _) = v
-          ctxt = cxt . map (\n -> classP ''Lift [varT n])
-          typ = foldl appT (conT n) . map varT
+  where liftInstance dcx n vs cases =
+          instanceD (ctxt dcx vs) (conT ''Lift `appT` typ n vs) [funD 'lift cases]
+        unTyVarBndr (PlainTV v) = v
+        unTyVarBndr (KindedTV v _) = v
+        ctxt dcx = fmap (dcx ++) . cxt . map (\n -> classP ''Lift [varT n])
+        typ n = foldl appT (conT n) . map varT
 
 doCons :: Con -> Q Clause
 doCons (NormalC c sts) = do
diff --git a/t/Foo.hs b/t/Foo.hs
--- a/t/Foo.hs
+++ b/t/Foo.hs
@@ -3,7 +3,7 @@
 
 import Language.Haskell.TH.Lift
 
-data Foo a = Foo a Char | Bar a
+data (Eq a) => Foo a = Foo a Char | Bar a
     deriving Show
 
 newtype Rec a = Rec { field :: a }
diff --git a/th-lift.cabal b/th-lift.cabal
--- a/th-lift.cabal
+++ b/th-lift.cabal
@@ -1,6 +1,6 @@
 Name:               th-lift
-Version:            0.4
-Cabal-Version:	    >= 1.3
+Version:            0.5
+Cabal-Version:	    >= 1.6
 License:            OtherLicense
 License-File:       COPYING
 Copyright:          Ian Lynagh, 2006
@@ -11,10 +11,14 @@
     Derive Template Haskell's Lift class for datatypes.
 Category:           Language
 Tested-With:        GHC==6.12
-Build-Depends:      base >= 4 && < 5, template-haskell >= 2.4
-Extensions:         TemplateHaskell, MagicHash, TypeSynonymInstances
 build-type:         Simple
 Extra-source-files: BSD3, GPL-2, Changelog, t/Foo.hs, t/Test.hs
-Exposed-modules:
-    Language.Haskell.TH.Lift
 
+Library
+  Build-Depends:   base >= 4 && < 5, template-haskell >= 2.4 && < 2.5
+  Exposed-modules: Language.Haskell.TH.Lift
+  Extensions:      TemplateHaskell, MagicHash, TypeSynonymInstances
+
+source-repository head
+  type:     git
+  location: git://github.com/mboes/th-lift
