diff --git a/src/Data/Validity/Containers.hs b/src/Data/Validity/Containers.hs
--- a/src/Data/Validity/Containers.hs
+++ b/src/Data/Validity/Containers.hs
@@ -1,5 +1,8 @@
 module Data.Validity.Containers where
 
 import Data.Validity.Tree as Containers ()
+import Data.Validity.Set as Containers ()
+import Data.Validity.Map as Containers ()
+import Data.Validity.Sequence as Containers ()
 
 
diff --git a/src/Data/Validity/Map.hs b/src/Data/Validity/Map.hs
--- a/src/Data/Validity/Map.hs
+++ b/src/Data/Validity/Map.hs
@@ -1,13 +1,12 @@
 module Data.Validity.Map where
 
-import           Data.Validity
+import Data.Validity
 
-import           Data.Map (Map)
+import Data.Map (Map)
 import qualified Data.Map as M
 
--- | A tree of things is valid if all the things are valid and the map itself
+-- | A 'Map' of things is valid if all the keys and values are valid and the 'Map' itself
 -- is valid.
-instance (Ord k, Validity k, Validity v) => Validity (Map k v) where
-    isValid m = M.valid m && all isValid (M.keys m) && all isValid m
-
-
+instance (Ord k, Validity k, Validity v) =>
+         Validity (Map k v) where
+    isValid m = M.valid m && all isValid (M.toList m)
diff --git a/src/Data/Validity/Sequence.hs b/src/Data/Validity/Sequence.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Sequence.hs
@@ -0,0 +1,11 @@
+module Data.Validity.Sequence where
+
+import Data.Validity
+
+import Data.Sequence (Seq)
+import qualified Data.Sequence as S
+
+-- | A 'Seq'uence of things is valid if all the elements are valid.
+instance (Ord v, Validity v) =>
+         Validity (Seq v) where
+    isValid = all isValid
diff --git a/src/Data/Validity/Set.hs b/src/Data/Validity/Set.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Validity/Set.hs
@@ -0,0 +1,12 @@
+module Data.Validity.Set where
+
+import Data.Validity
+
+import Data.Set (Set)
+import qualified Data.Set as S
+
+-- | A 'Set' of things is valid if all the elements are valid and the 'Set' itself
+-- is valid.
+instance (Ord v,Validity v) =>
+         Validity (Set v) where
+    isValid s = S.valid s && all isValid s
diff --git a/src/Data/Validity/Tree.hs b/src/Data/Validity/Tree.hs
--- a/src/Data/Validity/Tree.hs
+++ b/src/Data/Validity/Tree.hs
@@ -4,7 +4,7 @@
 
 import           Data.Tree
 
--- | A tree of things is valid if all the things are valid
+-- | A 'Tree' of things is valid if all the things in the 'Tree' are valid.
 instance Validity a => Validity (Tree a) where
     isValid = all isValid
 
diff --git a/validity-containers.cabal b/validity-containers.cabal
--- a/validity-containers.cabal
+++ b/validity-containers.cabal
@@ -1,5 +1,5 @@
 name:                validity-containers
-version:             0.1.0.1
+version:             0.1.0.2
 synopsis:            Validity instances for containers
 description:         Please see README.md
 homepage:            https://github.com/NorfairKing/validity#readme
@@ -8,9 +8,8 @@
 author:              Tom Sydney Kerckhove
 maintainer:          syd.kerckhove@gmail.com
 copyright:           Copyright: (c) 2016 Tom Sydney Kerckhove
-category:            Web
+category:            Validity
 build-type:          Simple
--- extra-source-files:
 cabal-version:       >=1.10
 
 library
@@ -18,8 +17,10 @@
   exposed-modules:     Data.Validity.Containers
                      , Data.Validity.Tree
                      , Data.Validity.Map
+                     , Data.Validity.Sequence
+                     , Data.Validity.Set
   build-depends:       base < 5
-                     , validity
+                     , validity >= 0.3 && < 0.4
                      , containers
   default-language:    Haskell2010
 
