diff --git a/changelog b/changelog
deleted file mode 100644
--- a/changelog
+++ /dev/null
@@ -1,21 +0,0 @@
-0.2.0
-
-* Refactoring with lots of changes to data types.
-* Introduce nix for building.
-
-0.1.2
-
-* Add instance of `Wrapped` and `Swapped`.
-
-0.1.1
-
-* Introduce `separatedBy` and `separatedBy1` combinators.
-
-0.1.0
-
-* Refactor and reorganisation of modules.
-
-0.0.8
-
-* This change log starts.
-
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,25 @@
+0.2.3
+
+* Add `Foldable` and `Traversable` instances for `Separated`, `Separated1`, `Pesarated` and `Pesarated1`.
+
+0.2.0
+
+* Refactoring with lots of changes to data types.
+* Introduce nix for building.
+
+0.1.2
+
+* Add instance of `Wrapped` and `Swapped`.
+
+0.1.1
+
+* Introduce `separatedBy` and `separatedBy1` combinators.
+
+0.1.0
+
+* Refactor and reorganisation of modules.
+
+0.0.8
+
+* This change log starts.
+
diff --git a/separated.cabal b/separated.cabal
--- a/separated.cabal
+++ b/separated.cabal
@@ -1,9 +1,9 @@
 name:               separated
-version:            0.2.2
+version:            0.2.3
 license:            BSD3
 license-File:       LICENCE
-author:             Tony Morris <oᴉ˙ldɟb@llǝʞsɐɥ>
-maintainer:         Queensland Functional Programming Lab (QFPL)
+author:             Queensland Functional Programming Lab <oᴉ˙ldɟb@llǝʞsɐɥ>
+maintainer:         Queensland Functional Programming Lab <oᴉ˙ldɟb@llǝʞsɐɥ>
 copyright:          Copyright (c) 2017, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230.
 synopsis:           A data type with elements separated by values
 category:           Data
@@ -15,7 +15,8 @@
 bug-reports:        https://github.com/qfpl/separated/issues
 cabal-version:      >= 1.10
 build-type:         Custom
-extra-source-files: changelog
+EXtra-source-files: changelog.md
+tested-with:        GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
 
 source-repository   head
   type:             git
diff --git a/src/Data/Separated.hs b/src/Data/Separated.hs
--- a/src/Data/Separated.hs
+++ b/src/Data/Separated.hs
@@ -43,7 +43,7 @@
 import Data.Bifunctor(Bifunctor(bimap), first)
 import Data.Bitraversable(Bitraversable(bitraverse))
 import Data.Eq(Eq)
-import Data.Foldable(foldr)
+import Data.Foldable(Foldable, foldr)
 import Data.Functor(Functor(fmap), (<$>))
 import Data.Functor.Apply as Apply(Apply((<.>)))
 import Data.List(intercalate, zipWith, repeat)
@@ -51,9 +51,9 @@
 import Data.Ord(Ord)
 import Data.Semigroup as Semigroup(Semigroup((<>)))
 import Data.String(String)
-import Data.Traversable(traverse)
-import Data.Tuple(uncurry)
-import Prelude(Show(show))
+import Data.Traversable(Traversable, traverse)
+import Data.Tuple(fst, snd, uncurry)
+import Prelude(Show(show), const, flip)
 
 -- $setup
 -- >>> :set -XNoImplicitPrelude
@@ -531,6 +531,14 @@
   fmap =
     bimap id
 
+instance Foldable (Separated a) where
+  foldr f z (Separated xs) =
+    foldr f z (fmap snd xs)
+
+instance Traversable (Separated a) where
+  traverse f (Separated xs) =
+    Separated <$> traverse (traverse f) xs
+
 -- | Applies functions with element values, using a zipping operation, appending
 -- separators.
 --
@@ -613,6 +621,14 @@
   fmap =
     bimap id
 
+instance Foldable (Separated1 b) where
+  foldr =
+    bifoldr (flip const)
+
+instance Traversable (Separated1 b) where
+  traverse =
+    bitraverse pure
+
 -- | Applies functions with separator values, using a zipping operation,
 -- appending elements.
 --
@@ -676,6 +692,15 @@
   fmap f (Pesarated x) =
     Pesarated (first f x)
 
+instance Foldable (Pesarated b) where
+  foldr =
+    bifoldr (flip const)
+
+instance Traversable (Pesarated b) where
+  traverse =
+    bitraverse pure
+
+
 -- | Applies functions with element values, using a zipping operation, appending
 -- separators.
 --
@@ -755,6 +780,14 @@
 instance Functor (Pesarated1 a) where
   fmap f (Pesarated1 x) =
     Pesarated1 (first f x)
+
+instance Foldable (Pesarated1 a) where
+  foldr =
+    bifoldr (flip const)
+
+instance Traversable (Pesarated1 a) where
+  traverse =
+    bitraverse pure
 
 -- | Applies functions with separator values, using a zipping operation,
 -- appending elements.
