diff --git a/Data/Semigroup.hs b/Data/Semigroup.hs
--- a/Data/Semigroup.hs
+++ b/Data/Semigroup.hs
@@ -27,6 +27,8 @@
   -- * A better monoid for Maybe
   , Option(..)
   , option
+  -- * Difference lists of a semigroup
+  , diff
   ) where
 
 import Prelude hiding (foldr1)
@@ -218,3 +220,7 @@
 instance Semigroup a => Monoid (Option a) where
   mempty = empty
   Option a `mappend` Option b = Option (a <> b)
+
+-- | This lets you use a 'difference list' of a semigroup as a Monoid.
+diff :: Semigroup m => m -> Endo m
+diff = Endo . (<>)
diff --git a/semigroups.cabal b/semigroups.cabal
--- a/semigroups.cabal
+++ b/semigroups.cabal
@@ -1,18 +1,22 @@
 name:          semigroups
-category:      Control, Comonads
-version:       0.3.3
+category:      Algebra, Data, Data Structures, Math
+version:       0.3.4
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
 author:        Edward A. Kmett
 maintainer:    Edward A. Kmett <ekmett@gmail.com>
 stability:     provisional
-homepage:      http://comonad.com/reader/
-copyright:     Copyright (C) 2008-2011 Edward A. Kmett, Copyright (C) 2004-2008 Dave Menendez
+homepage:      git://github.com/ekmett/semigroups/
+copyright:     Copyright (C) 2011 Edward A. Kmett
 synopsis:      Haskell 98 semigroups
 description:   Haskell 98 semigroups
 build-type:    Simple  
 
+source-repository head
+  type: git
+  location: git://github.com/ekmett/semigroups.git
+
 flag DeriveDataTypeable
   description: DeriveDataTypeable available
   default: True
@@ -28,4 +32,3 @@
 
   exposed-modules:
     Data.Semigroup
-
