diff --git a/Changelog b/Changelog
--- a/Changelog
+++ b/Changelog
@@ -1,5 +1,8 @@
+2010-03-24  Mathieu Boespflug  <mboes@tweag.net>
 
-0.1 6/9/2006:
+	* Port to Template Haskell 2.4.
+	* Maintainer is now Mathieu Boespflug.
 
-* Initial release.
+2006-09-06  Ian Lynagh <igloo@earth.li>
 
+	* Initial release.
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
@@ -2,22 +2,24 @@
 module Language.Haskell.TH.Lift where
 
 import GHC.Exts
-import Data.PackedString
 import Language.Haskell.TH
 import Language.Haskell.TH.Syntax
 
 modName :: String
 modName = "Language.Haskell.TH.Lift"
 
-deriveLift :: Name -> Q Dec
+deriveLift :: Name -> Q [Dec]
 deriveLift n
  = do i <- reify n
       case i of
-          TyConI (DataD _ _ vs cons _) ->
-              let ctxt = cxt [conT ''Lift `appT` varT v | v <- vs]
+          TyConI (DataD _ _ vsk cons _) ->
+              let unTyVarBndr (PlainTV v) = v
+                  unTyVarBndr (KindedTV v _) = v
+                  vs = map unTyVarBndr vsk
+                  ctxt = cxt [classP ''Lift [varT v] | v <- vs]
                   typ = foldl appT (conT n) $ map varT vs
                   fun = funD 'lift (map doCons cons)
-              in instanceD ctxt (conT ''Lift `appT` typ) [fun]
+              in instanceD ctxt (conT ''Lift `appT` typ) [fun] >>= return . (:[])
           _ -> error (modName ++ ".deriveLift: unhandled: " ++ pprint i)
 
 doCons :: Con -> Q Clause
@@ -32,8 +34,14 @@
 instance Lift Name where
     lift (Name occName nameFlavour) = [| Name occName nameFlavour |]
 
-instance Lift PackedString where
-    lift ps = [| packString $(lift $ unpackPS ps) |]
+instance Lift OccName where
+  lift n = [| mkOccName $(lift $ occString n) |]
+
+instance Lift PkgName where
+  lift n = [| mkPkgName $(lift $ pkgString n) |]
+
+instance Lift ModName where
+  lift n = [| mkModName $(lift $ modString n) |]
 
 instance Lift NameFlavour where
     lift NameS = [| NameS |]
diff --git a/th-lift.cabal b/th-lift.cabal
--- a/th-lift.cabal
+++ b/th-lift.cabal
@@ -1,20 +1,19 @@
 Name:               th-lift
-Version:            0.2
+Version:            0.3
+Cabal-Version:	    >= 1.3
 License:            OtherLicense
 License-File:       COPYING
 Copyright:          Ian Lynagh, 2006
 Author:             Ian Lynagh
-Maintainer:         igloo@earth.li
-Stability:          experimental
+Maintainer:         Mathieu Boespflug <mboes@tweag.net>
 Synopsis:           Derive Template Haskell's Lift class for datatypes.
 Description:
     Derive Template Haskell's Lift class for datatypes.
 Category:           Language
-Tested-With:        GHC==6.6
-Build-Depends:      base, template-haskell
-Extensions:         TemplateHaskell
--- Can't see an extension for I#
-ghc-options:        -fglasgow-exts
+Tested-With:        GHC==6.12
+Build-Depends:      base >= 4 && < 5, template-haskell >= 2.4
+Extensions:         TemplateHaskell, MagicHash
+build-type:         Simple
 Extra-source-files: BSD3, GPL-2, Changelog, Foo.hs, Test.hs
 Exposed-modules:
     Language.Haskell.TH.Lift
