diff --git a/Data/Algebra.hs b/Data/Algebra.hs
--- a/Data/Algebra.hs
+++ b/Data/Algebra.hs
@@ -6,6 +6,8 @@
   , UndecidableInstances
   , TemplateHaskell
   , DeriveFunctor
+  , DeriveFoldable
+  , DeriveTraversable
   #-}
 -----------------------------------------------------------------------------
 -- |
@@ -33,6 +35,8 @@
 
 import Control.Arrow ((&&&))
 import Data.Monoid
+import Data.Foldable
+import Data.Traversable
 
 
 instance Algebra f () where
diff --git a/Data/Algebra/Internal.hs b/Data/Algebra/Internal.hs
--- a/Data/Algebra/Internal.hs
+++ b/Data/Algebra/Internal.hs
@@ -16,8 +16,9 @@
 module Data.Algebra.Internal where
 
 import GHC.Exts (Constraint)
+import Data.Traversable (Traversable)
 
-class Functor f => AlgebraSignature f where
+class Traversable f => AlgebraSignature f where
   -- | The class for which @f@ is the signature.
   type Class f :: * -> Constraint
   -- | Translate the operations of the signature to method calls of the class.
diff --git a/Data/Algebra/TH.hs b/Data/Algebra/TH.hs
--- a/Data/Algebra/TH.hs
+++ b/Data/Algebra/TH.hs
@@ -23,9 +23,13 @@
 import Data.Algebra.Internal
 
 import Control.Applicative
+import Data.Foldable (Foldable)
+import Data.Traversable (Traversable)
+
 import Language.Haskell.TH
 import Data.Generics
 
+
 data SignatureTH = SignatureTH 
   { signatureName :: Name
   , typeVarName :: Name
@@ -89,7 +93,7 @@
 buildSignatureDataType :: SignatureTH -> [Dec]
 buildSignatureDataType s =
   let cons = [ NormalC nm (map ((,) NotStrict) ts) | OperationTH _ nm ts <- operations s ]
-  in [DataD [] (signatureName s) [PlainTV (typeVarName s)] cons [''Functor, ''Show]]
+  in [DataD [] (signatureName s) [PlainTV (typeVarName s)] cons [''Functor, ''Foldable, ''Traversable, ''Show]]
 
 signatureInstance :: Name -> SignatureTH -> [Dec]
 signatureInstance nm s = [inst]
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
+version:             0.1
 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@.
@@ -20,7 +20,7 @@
 license-file:        LICENSE
 author:              Sjoerd Visscher
 maintainer:          sjoerd@w3future.com
-category:            Data
+category:            Data, Generics, Math
 build-type:          Simple
 cabal-version:       >=1.8
 
