diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Revision history for explainable-predicates
 
+## 0.1.2.3 -- 2021-09-18
+
+* Version bounds now allow GHC 9.4 
 ## 0.1.2.2 -- 2021-12-20
 
 * Better error messages for HUnit integration.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,20 @@
+# explainable-predicates - Predicates that can explain themselves
+
+[![CI](https://github.com/cdsmith/explainable-predicates/actions/workflows/ci.yml/badge.svg)](https://github.com/cdsmith/explainable-predicates/actions/workflows/ci.yml)
+[![Hackage](https://img.shields.io/hackage/v/explainable-predicates)](https://hackage.haskell.org/package/explainable-predicates)
+
+[Explainable predicates](https://hackage.haskell.org/package/explainable-predicates)
+are essentially functions from types to `Bool` which can additionally describe
+themselves and explain why an argument does or doesn't match.  They are intended
+to be used during unit tests to provide better error messages when tests fail.
+For example, if a collection is missing an element, an explainable predicate can
+tell you which element is missing.
+
+## FAQ
+
+Here are a few tips for making the most of explainable-predicates.
+
+### Which GHC versions are supported?
+
+explainable-predicates is tested with GHC versions from 8.6 through 9.4.
+
diff --git a/explainable-predicates.cabal b/explainable-predicates.cabal
--- a/explainable-predicates.cabal
+++ b/explainable-predicates.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               explainable-predicates
-version:            0.1.2.2
+version:            0.1.2.3
 synopsis:           Predicates that can explain themselves.
 description:        Explainable predicates are essentially functions from types
                     to 'Bool' which can additionally describe themselves and
@@ -18,9 +18,9 @@
 author:             Chris Smith <cdsmith@gmail.com>
 maintainer:         Chris Smith <cdsmith@gmail.com>
 
-extra-source-files: CHANGELOG.md
+extra-source-files: CHANGELOG.md, README.md
 
-tested-with:        GHC == 8.6.5 || == 8.8.4 || == 8.10.7 || == 9.0.2 || == 9.2.3
+tested-with:        GHC == 8.6.5 || == 8.8.4 || == 8.10.7 || == 9.0.2 || == 9.2.3 || == 9.4.2
 
 source-repository head
     type:     git
@@ -56,9 +56,9 @@
                          Test.Predicates.Internal.FlowMatcher
     other-modules:       Test.Predicates.Internal.Util
     build-depends:       array >= 0.5.2 && < 0.6,
-                         base >=4.12.0 && < 4.17,
+                         base >=4.12.0 && < 4.18,
                          syb >= 0.7.2 && < 0.8,
-                         template-haskell >= 2.13.0 && < 2.19,
+                         template-haskell >= 2.13.0 && < 2.20,
     hs-source-dirs:      src
     default-language:    Haskell2010
     ghc-options:         -Wall -Wcompat -Wincomplete-uni-patterns
