diff --git a/Text/Boomerang/TH.hs b/Text/Boomerang/TH.hs
--- a/Text/Boomerang/TH.hs
+++ b/Text/Boomerang/TH.hs
@@ -42,7 +42,11 @@
 {-# DEPRECATED derivePrinterParsers "Use makeBoomerangs instead" #-}
 
 -- Derive a router for a single constructor.
+#if MIN_VERSION_template_haskell(2,21,0)
+deriveBoomerang :: (Name, [TyVarBndrVis]) -> Con -> Q [Dec]
+#else
 deriveBoomerang :: (Name, [TyVarBndrUnit]) -> Con -> Q [Dec]
+#endif
 deriveBoomerang (tName, tParams) con =
   case con of
     NormalC name tys -> go name (map snd tys)
diff --git a/boomerang.cabal b/boomerang.cabal
--- a/boomerang.cabal
+++ b/boomerang.cabal
@@ -1,5 +1,5 @@
 Name:             boomerang
-Version:          1.4.9.1
+Version:          1.4.9.2
 License:          BSD3
 License-File:     LICENSE
 Author:           jeremy@seereason.com
@@ -10,14 +10,14 @@
 Description:      Specify a single unified grammar which can be used for parsing and pretty-printing
 Cabal-Version:    >= 1.10
 Build-type:       Simple
-tested-with:      GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC==9.2.5, GHC==9.4.8, GHC==9.6.4
+tested-with:      GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC==9.2.5, GHC==9.4.8, GHC==9.6.4, GHC==9.8.2
 
 Library
         Default-Language: Haskell2010
         Build-Depends:    base             >= 4    && < 5,
                           mtl              >= 2.0  && < 2.4,
                           semigroups       >= 0.16 && < 0.21,
-                          template-haskell            < 2.21,
+                          template-haskell            < 2.22,
                           text             >= 0.11 && < 2.2,
                           th-abstraction   >= 0.4  && < 0.7
         Exposed-Modules:  Text.Boomerang
