diff --git a/src/Data/Validity.hs b/src/Data/Validity.hs
--- a/src/Data/Validity.hs
+++ b/src/Data/Validity.hs
@@ -36,17 +36,28 @@
 class Validity a where
     isValid :: a -> Bool
 
--- | Any @Foldable@ of things that can be checked for validity can be checked
--- for validity
+-- | Any tuple of things is valid if both of its elements are valid
+instance (Validity a, Validity b) => Validity (a, b) where
+    isValid (a, b) = isValid a && isValid b
+
+-- | Any tuple of things is valid if all three of its elements are valid
+instance (Validity a, Validity b, Validity c) => Validity (a, b, c) where
+    isValid (a, b, c) = isValid a && isValid b && isValid c
+
+-- | A list of things is valid if all of the things are valid.
 --
--- This includes lists, which means that the empty list is considered valid.
+-- This means that the empty list is considered valid.
 -- If the empty list should not be considered valid as part of your custom data
 -- type, make sure to write a custom @Validity instance@
---
--- This also includes @Maybe@:
+instance Validity a => Validity [a] where
+    isValid = all isValid
+
+-- | A Maybe thing is valid if the thing inside is valid or it's nothing
 -- It makes sense to assume that 'Nothing' is valid.
 -- If Nothing wasn't valid, you wouldn't have used a Maybe
 -- in the datastructure.
-instance (Validity a, Foldable t) => Validity (t a) where
-    isValid = all isValid
+instance Validity a => Validity (Maybe a) where
+    isValid Nothing = True
+    isValid (Just a) = isValid a
+
 
diff --git a/validity.cabal b/validity.cabal
--- a/validity.cabal
+++ b/validity.cabal
@@ -1,5 +1,5 @@
 name:                validity
-version:             0.2.0.0
+version:             0.3.0.0
 synopsis:            Validity typeclass
 description:         Please see README.md
 homepage:            https://github.com/NorfairKing/validity#readme
