diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+0.6 -> 0.7
+- Update for GHC 7.10
+  - Updated to base-4.9.0.0
+  - Updated to template-haskell-2.11.0.0
+  - Updated to syb-0.6
+
 0.5.2 -> 0.6
 - Update for GHC 7.10
   - Updated to base-4.8.0.0
diff --git a/Data/Algebra/TH.hs b/Data/Algebra/TH.hs
--- a/Data/Algebra/TH.hs
+++ b/Data/Algebra/TH.hs
@@ -28,7 +28,7 @@
 import Control.Arrow ((***))
 import Data.Monoid (Endo(..))
 
-import Data.Maybe (catMaybes)
+import Data.Maybe (catMaybes, fromMaybe)
 import Data.Char (isAlpha)
 import Language.Haskell.TH
 import Data.Generics (Data, everywhere, mkT)
@@ -58,8 +58,9 @@
       (SigD nm (ForallT [tv'] _ tp)) -> do
         let tvn' = tvName tv'
         dec <- reify nm
+        fty <- fromMaybe defaultFixity <$> reifyFixity nm
         case dec of
-          ClassOpI _ _ _ fty ->
+          ClassOpI _ _ _ ->
             return $ case buildOperation tvn' tp of
               Just (ar, mkCon) ->
                 let opName = changeName addPrefix nm
@@ -155,13 +156,13 @@
           (FunD fName [Clause (map VarP args) (NormalB (AppE (VarE 'algebra) (foldl (\e arg -> AppE e (VarE arg)) (ConE opName) args))) []])
           snd mgiven
       | OperationTH fName opName ar _ _ <- operations s, let mgiven = lookup (nameBase fName) givenLU, let args = mkArgList ar ]
-  (++ [InstanceD ctx (AppT (ConT className) typeName) impl]) <$>
+  (++ [InstanceD Nothing ctx (AppT (ConT className) typeName) impl]) <$>
     if addSignature then deriveSignature className else return []
 
 buildSignatureDataType :: SignatureTH -> [Dec]
 buildSignatureDataType s =
-  [DataD [] (signatureName s) [PlainTV (typeVarName s)] (constructor <$> operations s)
-    [''Functor, ''Foldable, ''Traversable, ''Eq, ''Ord]]
+  [DataD [] (signatureName s) [PlainTV (typeVarName s)] Nothing (constructor <$> operations s)
+    (map ConT [''Functor, ''Foldable, ''Traversable, ''Eq, ''Ord])]
 
 signatureInstances :: Name -> SignatureTH -> [Dec]
 signatureInstances nm s = [asInst, showInst, sigTFInst]
@@ -172,7 +173,7 @@
     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 ]
-    asInst = InstanceD [] (AppT (ConT ''AlgebraSignature) signature) [typeInst, FunD 'evaluate asClauses]
+    asInst = InstanceD Nothing [] (AppT (ConT ''AlgebraSignature) signature) [typeInst, FunD 'evaluate asClauses]
     showsPrecClauses =
       [ Clause [VarP d, ConP opName (map VarP args)] (NormalB $ createShowsPrec d (nameBase fName) prec args) []
       | OperationTH fName opName ar _ (Fixity prec _) <- operations s, let args = mkArgList ar, let d = mkName "d" ]
@@ -190,12 +191,12 @@
     addArg expr arg =
       Just $ InfixE expr (VarE '(.)) (Just (InfixE (Just (AppE (VarE 'showChar) (LitE (CharL ' ')))) (VarE '(.))
         (Just (AppE (AppE (VarE 'showsPrec) (LitE (IntegerL 11))) (VarE arg)))))
-    showInst = InstanceD [AppT (ConT ''Show) a] (AppT (ConT ''Show) (AppT signature a)) [FunD 'showsPrec showsPrecClauses]
+    showInst = InstanceD Nothing [AppT (ConT ''Show) a] (AppT (ConT ''Show) (AppT signature a)) [FunD 'showsPrec showsPrecClauses]
     a = VarT $ mkName "a"
 
 buildOperation :: Name -> Type -> Maybe (Int, Name -> Con)
 buildOperation nm (VarT nm') = if nm == nm' then Just (0, \opName -> NormalC opName []) else Nothing
-buildOperation nm (AppT (AppT ArrowT h) t) = ((+1) *** fmap (prependC (NotStrict, h))) <$> buildOperation nm t
+buildOperation nm (AppT (AppT ArrowT h) t) = ((+1) *** fmap (prependC h)) <$> buildOperation nm t
 buildOperation _ _ = Nothing
 
 changeName :: (String -> String) -> Name -> Name
@@ -219,8 +220,8 @@
 rename a b c | a == c = b
 rename _ _ t = t
 
-prependC :: (Strict, Type) -> Con -> Con
-prependC st (NormalC nm sts) = NormalC nm (st:sts)
+prependC :: Type -> Con -> Con
+prependC st (NormalC nm sts) = NormalC nm ((Bang NoSourceUnpackedness NoSourceStrictness, st):sts)
 
 tvName :: TyVarBndr -> Name
 tvName (PlainTV nm) = nm
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.6
+version:             0.7
 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@.
@@ -36,10 +36,10 @@
     Data.Algebra.Internal
 
   build-depends:
-      base == 4.8.*
-    , syb == 0.4.*
-    , template-haskell == 2.10.0.*
+      base == 4.9.*
+    , syb == 0.6.*
+    , template-haskell == 2.11.0.*
 
 source-repository head
   type:     git
-  location: git://github.com/sjoerdvisscher/algebraic-functors.git
+  location: git://github.com/sjoerdvisscher/algebraic-classes.git
diff --git a/examples/Fractional.hs b/examples/Fractional.hs
--- a/examples/Fractional.hs
+++ b/examples/Fractional.hs
@@ -2,11 +2,7 @@
 {-# LANGUAGE TemplateHaskell, TypeFamilies, DeriveTraversable, RankNTypes #-}
 
 import Data.Algebra
-import Data.Algebra.TH
 import Data.Ratio
-
-deriveSignature ''Num
-deriveSignature ''Fractional
 
 deriveInstance [t| forall m n. (Num m, Num n) => Num (m, n) |]
 deriveInstance [t| forall m n. (Fractional m, Fractional n) => Fractional (m, n) |]
