diff --git a/data-clist.cabal b/data-clist.cabal
--- a/data-clist.cabal
+++ b/data-clist.cabal
@@ -5,7 +5,7 @@
              Given that the ring terminiology clashes with certain
              mathematical branches, we're using the term CList or
              CircularList instead.
-Version: 0.0.7.4
+Version: 0.1.0.0
 License: BSD3
 License-File: LICENSE
 Author: John Van Enk <vanenkj@gmail.com>
diff --git a/src/Data/CircularList.hs b/src/Data/CircularList.hs
--- a/src/Data/CircularList.hs
+++ b/src/Data/CircularList.hs
@@ -69,12 +69,18 @@
     isEmpty, size,
 ) where
 
+import Control.Applicative hiding (empty)
+import Prelude
 import Data.List(find,unfoldr,foldl')
 import Control.DeepSeq(NFData(..))
 import Control.Monad(join)
+import qualified Data.Traversable as T
+import qualified Data.Foldable as F
+
 import Test.QuickCheck.Arbitrary
 import Test.QuickCheck.Gen
 
+
 -- | A functional ring type.
 data CList a = Empty
              | CList [a] a [a]
@@ -349,3 +355,13 @@
 instance Functor CList where
     fmap _ Empty = Empty
     fmap fn (CList l f r) = (CList (fmap fn l) (fn f) (fmap fn r))
+
+instance F.Foldable CList where
+  foldMap = T.foldMapDefault
+
+instance T.Traversable CList where
+  -- | traverses the list from left to right, starting at the focus
+  traverse _ Empty         = pure Empty
+  traverse g (CList l f r) = (\f' r' l' -> CList l' f' r') <$> g f
+                                                           <*> T.traverse g r
+                                                           <*> T.traverse g l
