diff --git a/multirec.cabal b/multirec.cabal
--- a/multirec.cabal
+++ b/multirec.cabal
@@ -1,5 +1,5 @@
 name:                 multirec
-version:              0.7.3
+version:              0.7.4
 license:              BSD3
 license-file:         LICENSE
 author:               Alexey Rodriguez,
@@ -81,4 +81,4 @@
                       Generics.MultiRec.TEq
 
   build-depends:      base >= 3.0 && < 5,
-                      template-haskell >= 2.4 && < 2.9
+                      template-haskell >= 2.4 && < 2.10
diff --git a/src/Generics/MultiRec/TH.hs b/src/Generics/MultiRec/TH.hs
--- a/src/Generics/MultiRec/TH.hs
+++ b/src/Generics/MultiRec/TH.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE GADTs           #-}
 {-# LANGUAGE KindSignatures  #-}
 {-# LANGUAGE PatternGuards   #-}
+{-# LANGUAGE CPP             #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -94,12 +95,17 @@
     sum a b = conT ''(:+:) `appT` a `appT` b
 
 derivePFInstance :: Name -> [Name] -> [(Name, [Name])] -> Q [Dec]
-derivePFInstance n ps nps =
-    return <$>
-    tySynInstD ''PF [foldl appT (conT n) (map varT ps)] (foldr1 sum (map (pfType (map fst nps) ps) nps))
+derivePFInstance n ps nps = return <$> myTySynInst
   where
     sum :: Q Type -> Q Type -> Q Type
     sum a b = conT ''(:+:) `appT` a `appT` b
+    tys = [foldl appT (conT n) (map varT ps)]
+    ty  = foldr1 sum (map (pfType (map fst nps) ps) nps)
+#if __GLASGOW_HASKELL__ > 706
+    myTySynInst = tySynInstD ''PF (tySynEqn tys ty)
+#else
+    myTySynInst = tySynInstD ''PF tys ty
+#endif
 
 -- | Derive only the 'El' instances. Not needed if 'deriveAll'
 -- is used.
