diff --git a/Database/Persist/TH.hs b/Database/Persist/TH.hs
--- a/Database/Persist/TH.hs
+++ b/Database/Persist/TH.hs
@@ -865,7 +865,7 @@
 
     lenses <- mkLenses mps t
     let instanceConstraint = if not (mpsGeneric mps) then [] else
-          [ClassP ''PersistStore [backendT]]
+          [mkClassP ''PersistStore [backendT]]
 
     return $ addSyn $
        dataTypeDec mps t : mconcat fkc `mappend`
@@ -944,7 +944,7 @@
         vars = PlainTV fT
              : (if mpsGeneric mps then [PlainTV backend1{-, PlainTV backend2-}] else [])
     return
-        [ SigD lensName $ ForallT vars [ClassP ''Functor [VarT fT]] $
+        [ SigD lensName $ ForallT vars [mkClassP ''Functor [VarT fT]] $
             (aT `arrow` (VarT fT `AppT` bT)) `arrow`
             (sT `arrow` (VarT fT `AppT` tT))
         , FunD lensName $ return $ Clause
@@ -1111,8 +1111,8 @@
 
         return $
             InstanceD
-            [ ClassP ''PersistQuery [backendT]
-            , EqualP (ConT ''PersistEntityBackend `AppT` entityT) backendT
+            [ mkClassP ''PersistQuery [backendT]
+            , mkEqualP (ConT ''PersistEntityBackend `AppT` entityT) backendT
             ]
             (ConT ''DeleteCascade `AppT` entityT `AppT` backendT)
             [ FunD 'deleteCascade
@@ -1157,7 +1157,7 @@
     InstanceD ctx (ConT clazz `AppT` typ)
   where
     ctx
-        | hasBackend = [ClassP ''PersistStore [backendT]]
+        | hasBackend = [mkClassP ''PersistStore [backendT]]
         | otherwise = []
 
 persistFieldInstanceD :: Bool -- ^ include PersistStore backend constraint
@@ -1369,7 +1369,7 @@
 mkField mps et cd = do
     let con = ForallC
                 []
-                [EqualP (VarT $ mkName "typ") $ maybeIdType mps cd Nothing Nothing]
+                [mkEqualP (VarT $ mkName "typ") $ maybeIdType mps cd Nothing Nothing]
                 $ NormalC name []
     bod <- lift cd
     let cla = normalClause
@@ -1470,6 +1470,20 @@
                     parseJSON = $(varE (entityFromJSON entityJSON))
                 |]
             return $ toJSONI : fromJSONI : entityJSONIs
+
+mkClassP :: Name -> [Type] -> Pred
+#if MIN_VERSION_template_haskell(2,10,0)
+mkClassP cla tys = foldl AppT (ConT cla) tys
+#else
+mkClassP = ClassP
+#endif
+
+mkEqualP :: Type -> Type -> Pred
+#if MIN_VERSION_template_haskell(2,10,0)
+mkEqualP tleft tright = foldl AppT EqualityT [tleft, tright]
+#else
+mkEqualP = EqualP
+#endif
 
 -- entityUpdates :: EntityDef -> [(HaskellName, FieldType, IsNullable, PersistUpdate)]
 -- entityUpdates =
diff --git a/persistent-template.cabal b/persistent-template.cabal
--- a/persistent-template.cabal
+++ b/persistent-template.cabal
@@ -1,5 +1,5 @@
 name:            persistent-template
-version:         2.1.0.1
+version:         2.1.1
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -15,7 +15,7 @@
 extra-source-files: test/main.hs ChangeLog.md README.md
 
 library
-    build-depends:   base                     >= 4         && < 5
+    build-depends:   base                     >= 4.6         && < 5
                    , template-haskell
                    , persistent               >= 2.1       && < 3
                    , monad-control            >= 0.2       && < 1.1
@@ -39,7 +39,7 @@
     main-is:       main.hs
     hs-source-dirs: test
 
-    build-depends:   base >= 4 && < 5
+    build-depends:   base >= 4.6 && < 5
                    , persistent-template
                    , aeson
                    , hspec >= 1.3
