diff --git a/data-accessor-template.cabal b/data-accessor-template.cabal
--- a/data-accessor-template.cabal
+++ b/data-accessor-template.cabal
@@ -1,5 +1,5 @@
 Name:             data-accessor-template
-Version:          0.2.1.3
+Version:          0.2.1.4
 License:          BSD3
 License-File:     LICENSE
 Author:           Luke Palmer <lrpalmer@gmail.com>, Henning Thielemann <haskell@henning-thielemann.de>
@@ -12,7 +12,7 @@
   Automate generation of @Accessor@'s of the @data-accessor@ package
   by Template Haskell functions.
 Build-Type:       Simple
-Tested-With:      GHC==6.8.2
+Tested-With:      GHC==6.8.2 && ==6.10.4
 Cabal-Version:    >=1.2
 
 Extra-Source-Files:
@@ -20,8 +20,8 @@
   src-5/Data/Accessor/Template.hs
 
 Flag template_2_4
-  description: Adapt to TemplateHaskell version of GHC-6.12
-  default: False
+  Description: Adapt to newer TemplateHaskell version, this is ignored for GHC
+  Default: False
 
 Library
   Build-Depends:
@@ -29,12 +29,27 @@
     utility-ht >=0.0.1 && <0.1,
     base >=1.0 && <6
 
-  If flag(template_2_4)
-    Hs-Source-Dirs: src-5
-    Build-Depends:  template-haskell >=2.4 && <2.5
+  If impl(ghc)
+    If impl(ghc >= 6.12)
+      Hs-Source-Dirs: src-5
+      Build-Depends:  template-haskell >=2.4 && <2.5
+    Else
+      Hs-Source-Dirs: src-3
+      Build-Depends:  template-haskell >=2.2 && <2.4
+
+  -- This is for TemplateHaskell implementations other than that of GHC.
+  -- However, currently there are no such implementations.
+  -- This is the cleaner way to express the dependency,
+  -- however cabal-install's automated flag and package dependency resolution fails
+  -- either for GHC-6.10 or GHC-6.12
+  -- depending on the default value of the template_2_4 flag.
   Else
-    Hs-Source-Dirs: src-3
-    Build-Depends:  template-haskell >=2.2 && <2.4
+    If flag(template_2_4)
+      Hs-Source-Dirs: src-5
+      Build-Depends:  template-haskell >=2.4 && <2.5
+    Else
+      Hs-Source-Dirs: src-3
+      Build-Depends:  template-haskell >=2.2 && <2.4
 
   Exposed-Modules:
     Data.Accessor.Template
diff --git a/src-5/Data/Accessor/Template.hs b/src-5/Data/Accessor/Template.hs
--- a/src-5/Data/Accessor/Template.hs
+++ b/src-5/Data/Accessor/Template.hs
@@ -124,7 +124,8 @@
                     ( $( return $ VarE name ) )
                 |]
         return
-          [ SigD accName (ForallT params [] (AppT (AppT (ConT ''Accessor.T) appliedT) ftype))
+          [ SigD accName (ForallT (map PlainTV params')
+               [] (AppT (AppT (ConT ''Accessor.T) appliedT) ftype))
           , ValD (VarP accName) (NormalB body) []
           ]
 
diff --git a/src/Data/Accessor/Template/Example.hs b/src/Data/Accessor/Template/Example.hs
--- a/src/Data/Accessor/Template/Example.hs
+++ b/src/Data/Accessor/Template/Example.hs
@@ -8,3 +8,12 @@
    Qux { x_ :: a }
 
 $( AT.deriveAccessors ''Foo )
+
+
+data HigherKind tycon =
+   HigherKind {
+      y_ :: tycon Int,
+      z_ :: tycon Char
+   }
+
+$( AT.deriveAccessors ''HigherKind )
