diff --git a/Data/Algebra/TH.hs b/Data/Algebra/TH.hs
--- a/Data/Algebra/TH.hs
+++ b/Data/Algebra/TH.hs
@@ -66,19 +66,8 @@
   let sigName = changeName (++ "Signature") name
   ops <- for decs $ \sig ->
     case sig of
-      (SigD nm (ForallT [tv'] _ tp)) -> do
-        let tvn' = tvName tv'
-        dec <- reify nm
-        fty <- fromMaybe defaultFixity <$> reifyFixity nm
-        case dec of
-          ClassOpI _ _ _ ->
-            return $ case buildOperation tvn' tp of
-              Just (ar, mkCon) ->
-                let opName = changeName addPrefix nm
-                in Just $ OperationTH nm opName ar (everywhere (mkT (rename tvn' tv)) (mkCon opName)) fty
-              _ -> Nothing
-          _ -> fail $ "No support for " ++ show dec
-      SigD{} -> fail $ "No support for " ++ show sig
+      SigD nm (ForallT [tv'] _ tp) -> mkOp nm tp tv (tvName tv')
+      SigD nm tp -> mkOp nm tp tv tv
       _ -> return Nothing
   scs <- for ctx $ \ty ->
     case ty of
@@ -89,6 +78,18 @@
           _ -> return $ Just $ SuperclassTH scName (changeName (addScPrefix name) scName) s
       _ -> return Nothing
   return $ SignatureTH sigName tv (catMaybes ops) (catMaybes scs)
+  where
+    mkOp nm tp tv tv' = do
+      dec <- reify nm
+      fty <- fromMaybe defaultFixity <$> reifyFixity nm
+      case dec of
+        ClassOpI _ _ _ ->
+          return $ case buildOperation tv' tp of
+            Just (ar, mkCon) ->
+              let opName = changeName addPrefix nm
+              in Just $ OperationTH nm opName ar (everywhere (mkT (rename tv' tv)) (mkCon opName)) fty
+            _ -> Nothing
+        _ -> fail $ "No support for " ++ show dec
 
 -- | Derive a signature for an algebraic class.
 --   For example:
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.9.3
+version:             0.9.4
 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@.
