diff --git a/groups.cabal b/groups.cabal
--- a/groups.cabal
+++ b/groups.cabal
@@ -1,5 +1,5 @@
 name:                groups
-version:             0.2.0.1
+version:             0.3.0.0
 synopsis:            Haskell 98 groups
 description:         
   Haskell 98 groups. A group is a monoid with invertibility.
diff --git a/src/Data/Group.hs b/src/Data/Group.hs
--- a/src/Data/Group.hs
+++ b/src/Data/Group.hs
@@ -39,3 +39,26 @@
 
 instance (Group a, Group b, Group c, Group d, Group e) => Group (a, b, c, d, e) where
   invert (a, b, c, d, e) = (invert a, invert b, invert c, invert d, invert e)
+  
+-- |An 'Abelian' group is a 'Group' that follows the rule:
+-- 
+-- @a \<> b == b \<> a@
+class Group g => Abelian g
+
+instance Abelian ()
+
+instance Num a => Abelian (Sum a)
+
+instance Fractional a => Abelian (Product a)
+
+instance Abelian a => Abelian (Dual a)
+
+instance Abelian b => Abelian (a -> b)
+
+instance (Abelian a, Abelian b) => Abelian (a, b)
+
+instance (Abelian a, Abelian b, Abelian c) => Abelian (a, b, c)
+
+instance (Abelian a, Abelian b, Abelian c, Abelian d) => Abelian (a, b, c, d)
+
+instance (Abelian a, Abelian b, Abelian c, Abelian d, Abelian e) => Abelian (a, b, c, d, e)
