diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for enum-subset-generate
 
+## 0.1.0.3
+
+* Reverse compatibility with `template-haskell < 2.21.0.0`.
+
 ## 0.1.0.2
 
 * Compatibility with `template-haskell-2.21.0.0`.
diff --git a/enum-subset-generate.cabal b/enum-subset-generate.cabal
--- a/enum-subset-generate.cabal
+++ b/enum-subset-generate.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a5f895f5e048ee489223e9f6a7714d58f52244391f1488154d9f73825761d617
+-- hash: 167c741bfcca1870f01e8c9f771def5ac417ea571e5a00c42641c436cf021695
 
 name:           enum-subset-generate
-version:        0.1.0.2
+version:        0.1.0.3
 synopsis:       Generate an ADT being a subset of another ADT, and the corresponding mappings.
 description:    Please see the README on GitHub at <https://github.com/0xd34df00d/enum-subset-generate#readme>
 category:       Data
diff --git a/src/Data/MakeEnum.hs b/src/Data/MakeEnum.hs
--- a/src/Data/MakeEnum.hs
+++ b/src/Data/MakeEnum.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE LambdaCase, RecordWildCards, ViewPatterns #-}
+{-# LANGUAGE LambdaCase, RecordWildCards, ViewPatterns, CPP #-}
 
 module Data.MakeEnum(
     makeEnum,
@@ -29,7 +29,13 @@
   _ -> fail "unsupported type"
   where omit' = Just <$> omit
 
-data DataDef = DataDef Cxt Name [TyVarBndr BndrVis] (Maybe Kind) [Con] [DerivClause]
+#if MIN_VERSION_template_haskell(2, 21, 0)
+type BndrParam = BndrVis
+#else
+type BndrParam = ()
+#endif
+
+data DataDef = DataDef Cxt Name [TyVarBndr BndrParam] (Maybe Kind) [Con] [DerivClause]
              deriving (Eq, Ord, Show)
 
 unwrapDec :: Dec -> Maybe DataDef
