diff --git a/Data/Default.hs b/Data/Default.hs
--- a/Data/Default.hs
+++ b/Data/Default.hs
@@ -1,23 +1,31 @@
 module Data.Default (
 -- | This module defines a class for types with a default value. Instances are
 -- provided for '()', 'S.Set', 'M.Map', 'Int', 'Integer', 'Float', 'Double',
--- 'Ratio', 'Maybe', '[]', '->' and 'IO'.
+-- and many others (see below).
     Default(..)
 ) where
 
+import Data.Monoid
 import Data.Ratio
 import qualified Data.Set as S
 import qualified Data.Map as M
+import Data.IntMap (IntMap)
+import Data.IntSet (IntSet)
+import Data.Sequence (Seq)
+import Data.Tree (Tree(..))
+import Data.DList (DList)
 
 -- | A class for types with a default value.
 class Default a where
     -- | The default value for this type.
     def :: a
 
-instance Default () where def = ()
-
 instance Default (S.Set v) where def = S.empty
 instance Default (M.Map k v) where def = M.empty
+instance Default (IntMap v) where def = mempty
+instance Default IntSet where def = mempty
+instance Default (Seq a) where def = mempty
+instance (Default a) => Default (Tree a) where def = Node def def
 
 instance Default Int where def = 0
 instance Default Integer where def = 0
@@ -25,8 +33,26 @@
 instance Default Double where def = 0
 instance (Integral a) => Default (Ratio a) where def = 0
 
+instance (Default r) => Default (e -> r) where def = const def
+instance (Default a) => Default (IO a) where def = return def
+
 instance Default (Maybe a) where def = Nothing
-instance Default [a] where def = []
 
-instance (Default r) => Default (e -> r) where def _ = def
-instance (Default a) => Default (IO a) where def = return def
+instance Default () where def = mempty
+instance Default [a] where def = mempty
+instance Default Ordering where def = mempty
+instance Default Any where def = mempty
+instance Default All where def = mempty
+instance Default (Last a) where def = mempty
+instance Default (First a) where def = mempty
+instance (Num a) => Default (Sum a) where def = mempty
+instance (Num a) => Default (Product a) where def = mempty
+instance Default (Endo a) where def = mempty
+
+instance Default (DList a) where def = mempty
+
+instance (Default a) => Default (Dual a) where def = Dual def
+instance (Default a, Default b) => Default (a, b) where def = (def, def)
+instance (Default a, Default b, Default c) => Default (a, b, c) where def = (def, def, def)
+instance (Default a, Default b, Default c, Default d) => Default (a, b, c, d) where def = (def, def, def, def)
+instance (Default a, Default b, Default c, Default d, Default e) => Default (a, b, c, d, e) where def = (def, def, def, def, def)
diff --git a/data-default.cabal b/data-default.cabal
--- a/data-default.cabal
+++ b/data-default.cabal
@@ -1,5 +1,5 @@
 Name:            data-default
-Version:         0.2.0.1
+Version:         0.3.0
 Cabal-Version:   >= 1.2
 Category:        Data
 Synopsis:        A class for types with a default value
@@ -10,6 +10,6 @@
 Maintainer:      <l.mai@web.de>
 
 Library
-  Build-Depends:     base >=2 && <5, containers
+  Build-Depends:     base >=2 && <5, containers, dlist
   Exposed-Modules:   Data.Default
   Ghc-Options:       -Wall -O2
