diff --git a/Data/Algebra/TH.hs b/Data/Algebra/TH.hs
--- a/Data/Algebra/TH.hs
+++ b/Data/Algebra/TH.hs
@@ -161,8 +161,8 @@
 signatureInstances nm s = [asInst, showInst, sigTFInst]
   where
     signature = ConT (signatureName s)
-    sigTFInst = TySynInstD ''Signature [ConT nm] signature
-    typeInst = TySynInstD ''Class [signature] (ConT nm)
+    sigTFInst = TySynInstD ''Signature (TySynEqn [ConT nm] signature)
+    typeInst = TySynInstD ''Class (TySynEqn [signature] (ConT nm))
     asClauses = 
       [ Clause [ConP opName (map VarP args)] (NormalB (foldl (\e arg -> AppE e (VarE arg)) (VarE fName) args)) []
       | OperationTH fName opName ar _ _ <- operations s, let args = mkArgList ar ]
diff --git a/algebraic-classes.cabal b/algebraic-classes.cabal
--- a/algebraic-classes.cabal
+++ b/algebraic-classes.cabal
@@ -1,5 +1,5 @@
 name:                algebraic-classes
-version:             0.5.1
+version:             0.5.2
 synopsis:            Conversions between algebraic classes and F-algebras.
 description:         Algebraic classes are type classes where all the methods return a value of the same type, which is also the class parameter.
                      Examples from @base@ are @Num@ and @Monoid@.
@@ -35,6 +35,6 @@
     Data.Algebra.Internal
   
   build-depends:
-      base == 4.6.*
+      base == 4.7.*
     , syb == 0.4.*
-    , template-haskell == 2.8.0.*
+    , template-haskell == 2.9.0.*
diff --git a/examples/Fractional.hs b/examples/Fractional.hs
new file mode 100644
--- /dev/null
+++ b/examples/Fractional.hs
@@ -0,0 +1,18 @@
+{-# OPTIONS_GHC -ddump-splices #-}
+{-# LANGUAGE TemplateHaskell, TypeFamilies, DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
+
+import Data.Algebra
+import Data.Algebra.TH
+import Data.Monoid
+import Data.Foldable
+import Data.Traversable
+import Data.Ratio
+
+deriveSignature ''Num
+deriveSignature ''Fractional
+
+deriveInstance [t| (Num m, Num n) => Num (m, n) |]
+deriveInstance [t| (Fractional m, Fractional n) => Fractional (m, n) |]
+
+test :: (Ratio Int, Ratio Int)
+test = (5, 3) / (3, 2) + (1, 4)
diff --git a/examples/Signatures.hs b/examples/Signatures.hs
--- a/examples/Signatures.hs
+++ b/examples/Signatures.hs
@@ -1,4 +1,4 @@
- {-# OPTIONS_GHC -ddump-splices #-}
+{-# OPTIONS_GHC -ddump-splices #-}
 {-# LANGUAGE TemplateHaskell, TypeFamilies, DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
 
 import Data.Algebra
