diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Version 1.4.4
+---------------
+* Tested with GHC 9.2.1, incremented the upper `template-haskell` dependency bound
+* Generalized the TH generation to handle PolyRec types
+* Incremented the lower bound of rank2classes' `base` dependency, thanks to phadej
+
 Version 1.4.3
 ---------------
 * Fixed links to standard rank-1 classes in Haddock documentation
diff --git a/rank2classes.cabal b/rank2classes.cabal
--- a/rank2classes.cabal
+++ b/rank2classes.cabal
@@ -1,5 +1,5 @@
 name:                rank2classes
-version:             1.4.3
+version:             1.4.4
 synopsis:            standard type constructor class hierarchy, only with methods of rank 2 types
 description:
   A mirror image of the standard type constructor class hierarchy rooted in 'Functor', except with methods of rank 2
@@ -38,12 +38,12 @@
   default-language:    Haskell2010
   -- other-modules:
   ghc-options:         -Wall
-  build-depends:       base >=4.9 && <5,
+  build-depends:       base >=4.10 && <5,
                        transformers >= 0.5 && < 0.7,
                        distributive < 0.7
 
   if flag(use-template-haskell)
-    build-depends: template-haskell >= 2.11 && < 2.18
+    build-depends: template-haskell >= 2.11 && < 2.19
     exposed-modules: Rank2.TH
 
 test-suite doctests
diff --git a/src/Rank2/TH.hs b/src/Rank2/TH.hs
--- a/src/Rank2/TH.hs
+++ b/src/Rank2/TH.hs
@@ -100,12 +100,12 @@
       _ -> fail "deriveApply: tyCon may not be a type synonym."
  
 #if MIN_VERSION_template_haskell(2,17,0)
-   let (KindedTV tyVar () (AppT (AppT ArrowT StarT) StarT)) = last tyVars
+   let (KindedTV tyVar () (AppT (AppT ArrowT _) StarT)) = last tyVars
        instanceType           = conT cls `appT` foldl apply (conT tyConName) (init tyVars)
        apply t (PlainTV name _)    = appT t (varT name)
        apply t (KindedTV name _ _) = appT t (varT name)
 #else
-   let (KindedTV tyVar (AppT (AppT ArrowT StarT) StarT)) = last tyVars
+   let (KindedTV tyVar (AppT (AppT ArrowT _) StarT)) = last tyVars
        instanceType           = conT cls `appT` foldl apply (conT tyConName) (init tyVars)
        apply t (PlainTV name)    = appT t (varT name)
        apply t (KindedTV name _) = appT t (varT name)
