diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,12 @@
+# Changelog
+
+## [0.5.0.0] - 2019-09-23
+
+### Added
+
+* `decorateMap`
+
+### Changed
+
+* The validity instance for maps now requires that keys are `Show`able.
+
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,6 +1,8 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
-module Data.Validity.Map where
+module Data.Validity.Map
+  ( decorateMap
+  ) where
 
 import Data.Validity
 
@@ -9,9 +11,15 @@
 
 -- | 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
-    validate m =
-        mconcat
-            [ declare "The Map structure is valid." $ M.valid m
-            , delve "Map elements" $ M.toList m
-            ]
+instance (Show k, Ord k, Validity k, Validity v) => Validity (Map k v) where
+  validate m =
+    mconcat
+      [ declare "The Map structure is valid." $ M.valid m
+      , decorate "Map elements" $
+        decorateMap m $ \k v -> mconcat [delve "The key" k, delve "The value" v]
+      ]
+
+decorateMap :: Show k => Map k v -> (k -> v -> Validation) -> Validation
+decorateMap m func = M.foldMapWithKey go m
+  where
+    go k v = decorate ("The key/value at key " <> show k) $ func k v
diff --git a/validity-containers.cabal b/validity-containers.cabal
--- a/validity-containers.cabal
+++ b/validity-containers.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 77cb2b975040064ad6346e213a7a6f93161985fcb67d7b8949aa00fcd8f9617d
+-- hash: 7745ecc88d5b340b3fdd71d06719f881d41ce168cf2e676e25bc38ea6f1ccd81
 
 name:           validity-containers
-version:        0.3.1.0
+version:        0.4.0.0
 synopsis:       Validity instances for containers
 description:    Please see README.md
 category:       Validity
@@ -18,19 +20,14 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
+extra-source-files:
+    CHANGELOG.md
 
 source-repository head
   type: git
   location: https://github.com/NorfairKing/validity
 
 library
-  hs-source-dirs:
-      src
-  build-depends:
-      base >=4.7 && <5
-    , containers
-    , validity >=0.5
   exposed-modules:
       Data.Validity.Containers
       Data.Validity.Tree
@@ -39,4 +36,10 @@
       Data.Validity.Set
   other-modules:
       Paths_validity_containers
+  hs-source-dirs:
+      src
+  build-depends:
+      base >=4.7 && <5
+    , containers
+    , validity >=0.5
   default-language: Haskell2010
