diff --git a/ConstraintKinds.cabal b/ConstraintKinds.cabal
--- a/ConstraintKinds.cabal
+++ b/ConstraintKinds.cabal
@@ -1,5 +1,5 @@
 Name:                ConstraintKinds
-Version:             0.0.1.3
+Version:             0.0.2.0
 Synopsis:            Repackages standard type classes with the ConstraintKinds extension
 Description:         This module provides more flexible versions of common type classes that use the ConstraintKinds extension.  This allows us to make types that require constraints instances of the popular classes.  For example, we reimplement Functor and Foldable using the ContraintKinds style.  This allows us to manipulate lists and unboxed vectors using the same functions.
                      .
@@ -14,12 +14,13 @@
 source-repository head
   type:     git
   location: https://github.com/mikeizbicki/ConstraintKinds
-  
+
 Library
     Build-Depends:      
         base                    >= 3 && < 5,
         ghc-prim,
-        vector                  >= 0.9
+        vector                  >= 0.9,
+        dlist                   >= 0.5
         
     hs-source-dirs:     src
     ghc-options:        -rtsopts -auto-all -caf-all
diff --git a/src/Control/ConstraintKinds/Foldable.hs b/src/Control/ConstraintKinds/Foldable.hs
--- a/src/Control/ConstraintKinds/Foldable.hs
+++ b/src/Control/ConstraintKinds/Foldable.hs
@@ -9,6 +9,7 @@
 import Data.Maybe
 import Data.Monoid
 
+import qualified Data.DList as D
 import qualified Data.Foldable as F
 import qualified Data.List as L
 import qualified Data.Traversable as T
@@ -17,6 +18,7 @@
 import qualified Data.Vector.Generic as G
 
 import Prelude hiding (foldl, foldr)
+import qualified Prelude as P
 
 -------------------------------------------------------------------------------
 -- Foldable
@@ -98,3 +100,12 @@
     foldl' = VU.foldl'
     foldr1 = VU.foldr1
     foldl1 = VU.foldl1
+
+
+instance Foldable D.DList where
+    type FoldableConstraint D.DList x = ()
+    foldr = D.foldr
+    foldl f a = {-Data.DList.-}F.foldl f a . D.toList
+    foldl' f a = {-Data.DList.-}F.foldl' f a . D.toList
+    foldr1 f = {-Data.DList.-}F.foldr1 f . D.toList
+    foldl1 f = {-Data.DList.-}F.foldl1 f . D.toList
