diff --git a/Data/Semigroup.hs b/Data/Semigroup.hs
--- a/Data/Semigroup.hs
+++ b/Data/Semigroup.hs
@@ -1,8 +1,12 @@
 -- | A semigroup is a binary associative operation.
-module Data.Semigroup(
-                     Semigroup((.++.)),
-                     (<++>)
-                     ) where
+module Data.Semigroup (
+  Semigroup((.++.))
+, (<++>)
+, Max(..)
+, Min(..)
+, BoundedMax(..)
+, BoundedMin(..)
+) where
 
 import Data.Monoid
 import Data.Sequence
@@ -98,4 +102,34 @@
 
 instance Semigroup B.ByteString where
   (.++.) = mappend
+
+newtype Max a = Max {
+  runMax :: a
+} deriving (Eq, Ord, Show, Read)
+
+instance Ord a => Semigroup (Max a) where
+  Max a .++. Max b = Max (a `max` b)
+
+newtype Min a = Min {
+  runMin :: a
+} deriving (Eq, Ord, Show, Read)
+
+instance Ord a => Semigroup (Min a) where
+  Min a .++. Min b = Min (a `min` b)
+
+newtype BoundedMax a = BoundedMax {
+  runBoundedMax :: Maybe a
+} deriving (Eq, Ord, Show, Read)
+
+instance Ord a => Monoid (BoundedMax a) where
+  mempty = BoundedMax Nothing
+  mappend = max
+
+newtype BoundedMin a = BoundedMin {
+  runBoundedMin :: Maybe a
+} deriving (Eq, Ord, Show, Read)
+
+instance Ord a => Monoid (BoundedMin a) where
+  mempty = BoundedMin Nothing
+  mappend = min
 
diff --git a/Semigroup.cabal b/Semigroup.cabal
--- a/Semigroup.cabal
+++ b/Semigroup.cabal
@@ -1,14 +1,14 @@
 Name:                Semigroup
-Version:             0.0.6
+Version:             0.0.7
 License:             BSD3
 License-File:        LICENSE
 Synopsis:            A semigroup
 Description:         A semigroup is a binary associative operation
-Homepage:            http://code.google.com/p/semigroup/
+Homepage:            https://bitbucket.org/dibblego/semigroup/
 Category:            Data
 Author:              Tony Morris
-Maintainer:          code@tmorris.net
-Copyright:           2010 Tony Morris
+Maintainer:          ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ
+Copyright:           2010-2011 Tony Morris
 build-type:          Simple
 cabal-version:       >= 1.2
 
