diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.2
+
+* Generalize kinds of gftraverse, gfzipWith and gfrepeat.
+
 # 0
 
 * Split off from `codex`
diff --git a/example/Record.hs b/example/Record.hs
--- a/example/Record.hs
+++ b/example/Record.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE PolyKinds #-}
 module Main (
   main,
   Record (..),
@@ -48,8 +48,8 @@
 -- Units
 -------------------------------------------------------------------------------
 
-data MyU1 (f :: Type -> Type) = MyU1 deriving Generic
-data MyV1 (f :: Type -> Type)        deriving Generic
+data MyU1 (f :: k -> Type) = MyU1 deriving Generic
+data MyV1 (f :: k -> Type)        deriving Generic
 
 instance FFunctor     MyU1 where ffmap     = ffmapDefault
 instance FFoldable    MyU1 where ffoldMap  = ffoldMapDefault
diff --git a/example/example-issue-12.hs b/example/example-issue-12.hs
new file mode 100644
--- /dev/null
+++ b/example/example-issue-12.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds      #-}
+{-# LANGUAGE DeriveGeneric  #-}
+{-# LANGUAGE KindSignatures #-}
+module Main where
+
+import Data.HKD
+import GHC.Generics (Generic)
+
+data Foo = Foo | Bar | Baz
+
+data MyHkd (f :: Foo -> *) = MyHkd
+  { foo :: f 'Foo
+  , bar :: f 'Bar
+  , baz :: f 'Baz
+  }
+  deriving Generic
+
+instance FFunctor MyHkd where ffmap = ffmapDefault
+instance FFoldable MyHkd where ffoldMap = ffoldMapDefault
+instance FTraversable MyHkd where ftraverse = gftraverse
+instance FZip MyHkd where fzipWith = gfzipWith
+instance FRepeat MyHkd where frepeat = gfrepeat
+
+main :: IO ()
+main = return ()
diff --git a/hkd.cabal b/hkd.cabal
--- a/hkd.cabal
+++ b/hkd.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.2
 name:            hkd
-version:         0.1
+version:         0.2
 synopsis:        "higher-kinded data"
 description:
   "Higher-kinded data" utilities, e.g.
@@ -34,7 +34,11 @@
    || ==8.2.2
    || ==8.4.4
    || ==8.6.5
-   || ==8.8.1
+   || ==8.8.4
+   || ==8.10.7
+   || ==9.0.2
+   || ==9.2.4
+   || ==9.4.2
 
 source-repository head
   type:     git
@@ -57,7 +61,7 @@
       -Wredundant-constraints -Widentities -Wmissing-export-lists
 
   build-depends:
-    , base  >=4.6     && <4.14
+    , base  >=4.6     && <4.18
     , some  ^>=1.0.0.3
 
   if !impl(ghc >=7.10)
@@ -93,3 +97,14 @@
     , base
     , hkd
     , some
+
+test-suite example-issue-12
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  ghc-options:      -Wall
+  hs-source-dirs:   example
+  main-is:          example-issue-12.hs 
+
+  build-depends:
+    , base
+    , hkd
diff --git a/src/Data/Functor/Confusing.hs b/src/Data/Functor/Confusing.hs
--- a/src/Data/Functor/Confusing.hs
+++ b/src/Data/Functor/Confusing.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP        #-}
+{-# LANGUAGE PolyKinds  #-}
 {-# LANGUAGE RankNTypes #-}
 -- |
 -- Csongor Kiss, Matthew Pickering, and Nicolas Wu. 2018. Generic deriving of generic traversals.
diff --git a/src/Data/HKD.hs b/src/Data/HKD.hs
--- a/src/Data/HKD.hs
+++ b/src/Data/HKD.hs
@@ -538,7 +538,7 @@
 -- @
 
 gftraverse
-  :: forall t (f :: Type -> Type) (g :: Type -> Type) m. (Applicative m, Generic (t f), Generic (t g), GFTraversable (Curried (Yoneda m)) f g (Rep (t f)) (Rep (t g)))
+  :: forall t f g m. (Applicative m, Generic (t f), Generic (t g), GFTraversable (Curried (Yoneda m)) f g (Rep (t f)) (Rep (t g)))
   => (forall a. f a -> m (g a))
   -> t f
   -> m (t g)
@@ -615,7 +615,7 @@
 -- @
 
 gfzipWith
-  :: forall t (f :: Type -> Type) (g :: Type -> Type) (h :: Type -> Type). (Generic (t f), Generic (t g), Generic (t h), GFZip f g h (Rep (t f)) (Rep (t g)) (Rep (t h)))
+  :: forall t f g h. (Generic (t f), Generic (t g), Generic (t h), GFZip f g h (Rep (t f)) (Rep (t g)) (Rep (t h)))
   => (forall a. f a -> g a -> h a)
   -> t f
   -> t g
@@ -665,7 +665,7 @@
 -------------------------------------------------------------------------------
 
 gfrepeat
-  :: forall t (f :: Type -> Type). (Generic (t f), GFRepeat f (Rep (t f)))
+  :: forall t f. (Generic (t f), GFRepeat f (Rep (t f)))
   => (forall x. f x)
   -> t f
 gfrepeat x = to (gfrepeat0 x)
