diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+0.9.5: Added traversable instances (thanks dolio!)
 0.9.4: More fixing docs
 0.9.3: Fix docs
 0.9.2: Fix error in cabal file
diff --git a/Data/Sequence/FastQueue.hs b/Data/Sequence/FastQueue.hs
--- a/Data/Sequence/FastQueue.hs
+++ b/Data/Sequence/FastQueue.hs
@@ -18,11 +18,13 @@
 -----------------------------------------------------------------------------
 
 module Data.Sequence.FastQueue(module Data.SequenceClass, FastQueue) where
+import Control.Applicative (pure, (<$>), (<*>))
+import Control.Applicative.Backwards
 import Data.SequenceClass
 import Data.Foldable
+import Data.Traversable
 import Prelude hiding (foldr,foldl)
 
-
 revAppend l r = rotate l r []
 -- precondtion : |a| = |f| - (|r| - 1)
 -- postcondition: |a| = |f| - |r|
@@ -60,4 +62,9 @@
  viewl (RQ [] [] []) = EmptyL
  viewl (RQ (h : t) f a) = h :< queue t f a
 
+instance Traversable FastQueue where
+  sequenceA q = case viewl q of
+     EmptyL -> pure empty
+     h :< t  -> (<|) <$> h <*> sequenceA t
+   
 
diff --git a/Data/Sequence/Queue.hs b/Data/Sequence/Queue.hs
--- a/Data/Sequence/Queue.hs
+++ b/Data/Sequence/Queue.hs
@@ -20,7 +20,10 @@
 --
 -----------------------------------------------------------------------------
 module Data.Sequence.Queue(module Data.SequenceClass,Queue)  where
+import Control.Applicative (pure, (<*>), (<$>))
 import Data.Foldable
+import Data.Monoid ((<>))
+import Data.Traversable
 import Prelude hiding (foldr,foldl)
 import Data.SequenceClass
 
@@ -29,6 +32,14 @@
 instance Functor P where
   fmap f (a :* b) = f a :* f b
 
+instance Foldable P where
+  foldl f z (a :* b) = f (f z a) b
+  foldr f z (a :* b) = f a (f b z)
+  foldMap f (a :* b) = f a <> f b
+
+instance Traversable P where
+  traverse f (a :* b) = (:*) <$> f a <*> f b
+
 data B a where
   B1 :: a    -> B a
   B2 :: !(P a)  -> B a
@@ -37,6 +48,18 @@
  fmap phi (B1 c) = B1 (phi c)
  fmap phi (B2 p) = B2 (fmap phi p)
 
+instance Foldable B where
+  foldl f z (B1 x) = f z x
+  foldl f z (B2 p) = foldl f z p
+  foldr f z (B1 x) = f x z
+  foldr f z (B2 p) = foldr f z p
+  foldMap f (B1 x) = f x
+  foldMap f (B2 p) = foldMap f p
+
+instance Traversable B where
+  traverse f (B1 x) = B1 <$> f x
+  traverse f (B2 p) = B2 <$> traverse f p
+
 data Queue a  where
   Q0 :: Queue a 
   Q1 :: a  -> Queue a
@@ -56,6 +79,11 @@
     where toRevList s = case viewl s of
            EmptyL -> []
            h :< t -> h : toRevList t
+
+instance Traversable Queue where
+  traverse f Q0 = pure Q0
+  traverse f (Q1 x) = Q1 <$> f x
+  traverse f (QN b1 q b2) = QN <$> traverse f b1 <*> traverse (traverse f) q <*> traverse f b2
 
 instance Sequence Queue where
   empty = Q0
diff --git a/Data/Sequence/ToCatQueue.hs b/Data/Sequence/ToCatQueue.hs
--- a/Data/Sequence/ToCatQueue.hs
+++ b/Data/Sequence/ToCatQueue.hs
@@ -20,7 +20,9 @@
 -----------------------------------------------------------------------------
 
 module Data.Sequence.ToCatQueue(module Data.SequenceClass,ToCatQueue) where
+import Control.Applicative (pure, (<*>), (<$>))
 import Data.Foldable
+import Data.Traversable
 import Prelude hiding (foldr,foldl)
 import Data.SequenceClass
 
@@ -34,15 +36,11 @@
   fmap f C0 = C0
   fmap f (CN l m) = CN (f l) (fmap (fmap f) m)
 
-instance Sequence q => Foldable (ToCatQueue q) where
-  foldl f = loop where
-    loop i s = case viewl s of
-          EmptyL -> i
-          h :< t -> loop (f i h) t
-  foldr f i s = foldr f i (reverse $ toRevList s)
-    where toRevList s = case viewl s of
-           EmptyL -> []
-           h :< t -> h : toRevList t
+instance Foldable q => Foldable (ToCatQueue q) where
+  foldl f z C0 = z
+  foldl f z (CN x qs) = foldl (foldl f) (f z x) qs
+  foldr f z C0 = z
+  foldr f z (CN x qs) = x `f` foldr (\q z -> foldr f z q) z qs
 
 instance Sequence q => Sequence (ToCatQueue q) where
  empty       = C0
@@ -61,3 +59,6 @@
     snoc q C0  = q
     snoc q r   = q |> r
 
+instance Traversable q => Traversable (ToCatQueue q) where
+  traverse f C0 = pure C0
+  traverse f (CN x qs) = CN <$> f x <*> traverse (traverse f) qs
diff --git a/sequence.cabal b/sequence.cabal
--- a/sequence.cabal
+++ b/sequence.cabal
@@ -1,5 +1,5 @@
 Name:                sequence
-Version:             0.9.4
+Version:             0.9.5
 Synopsis:	         A type class for sequences and various sequence data structures.
 Description:         A type class for sequences and various sequence data structures.
 License:             BSD3
@@ -13,7 +13,7 @@
 Category:            Data, Data Structures
 Tested-With:         GHC==7.6.3
 Library
-  Build-Depends: base >= 2 && <= 6, containers
+  Build-Depends: base >= 2 && <= 6, containers, transformers
   Exposed-modules: Data.SequenceClass, Data.Sequence.Queue, Data.Sequence.FastQueue, Data.Sequence.FastCatQueue,  Data.Sequence.ToCatQueue
   Extensions:	
 
