diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,62 @@
+# constraints-extras
+
+## Example usage:
+
+NB: This example can be built with `-pgmL markdown-unlit`.
+
+```haskell
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeApplications  #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE ExistentialQuantification #-}
+
+import Data.Aeson
+import Data.Constraint.Forall
+import Data.Constraint.Extras
+import Data.Constraint.Extras.TH
+
+data A :: * -> * where
+  A_a :: A Int
+  A_b :: Int -> A ()
+
+data B :: * -> * where
+  B_a :: A a -> A a -> B a
+  B_x :: Int -> B Int
+
+data V :: (* -> *) -> * where
+  V_a :: A Int -> V A
+
+deriveArgDict ''A
+deriveArgDict ''B
+deriveArgDictV ''V
+
+data DSum k f = forall a. DSum (k a) (f a)
+
+-- Derive a ToJSON instance for our 'DSum'
+instance forall k f.
+  ( Has' ToJSON k f -- Given a value of type (k a), we can obtain an instance (ToJSON (f a))
+  , ForallF ToJSON k -- For any (a), we have an instance (ToJSON (k a))
+  ) => ToJSON (DSum k f) where
+  toJSON (DSum (k :: k a) f) = toJSON
+    ( whichever @ToJSON @k @a $ toJSON k -- Use the (ForallF ToJSON k) constraint to obtain the (ToJSON (k a)) instance
+    , has' @ToJSON @f k $ toJSON f -- Use the (Has' ToJSON k f) constraint to obtain the (ToJSON (f a)) instance
+    )
+
+data Some k = forall a. Some (k a)
+
+-- Derive a FromJSON instance for our 'DSum'
+instance (FromJSON (Some f), Has' FromJSON f g) => FromJSON (DSum f g) where
+  parseJSON x = do
+    (jf, jg) <- parseJSON x
+    Some (f :: f a) <- parseJSON jf
+    g <- has' @FromJSON @g f (parseJSON jg)
+    return $ DSum f g
+
+main :: IO ()
+main = return ()
+```
diff --git a/constraints-extras.cabal b/constraints-extras.cabal
--- a/constraints-extras.cabal
+++ b/constraints-extras.cabal
@@ -1,5 +1,5 @@
 name: constraints-extras
-version: 0.2.3.0
+version: 0.2.3.1
 synopsis: Utility package for constraints
 description: Convenience functions and TH for working with constraints. See <https://github.com/obsidiansystems/constraints-extras/blob/develop/README.md README.md> for example usage.
 category: Constraints
@@ -10,6 +10,7 @@
 copyright: Obsidian Systems LLC
 build-type: Simple
 cabal-version: >=1.10
+extra-source-files: README.md
 
 library
   exposed-modules: Data.Constraint.Extras, Data.Constraint.Extras.TH
