diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.5.0.3
+=======
+* Add worked example of Katip/KatipContext to the haddocks.
+
 0.5.0.2
 =======
 * Export Katip.Compat for Windows users.
diff --git a/katip.cabal b/katip.cabal
--- a/katip.cabal
+++ b/katip.cabal
@@ -1,5 +1,5 @@
 name:                katip
-version:             0.5.0.2
+version:             0.5.0.3
 synopsis:            A structured logging framework.
 description:
   Katip is a structured logging framework. See README.md for more details.
diff --git a/src/Katip.hs b/src/Katip.hs
--- a/src/Katip.hs
+++ b/src/Katip.hs
@@ -27,6 +27,52 @@
 --
 -- @
 --
+-- Another common case that you have some sort of App monad that's
+-- based on ReaderT with some Config state. This is a perfect place to
+-- insert read-only katip state:
+--
+-- @
+--
+-- import Katip as K
+--
+-- data Config = Config {
+--   logNamespace :: K.Namespace
+-- , logContext :: K.LogContexts
+-- , logEnv :: K.LogEnv
+-- -- whatever other read-only config you need
+-- }
+--
+-- newtype App m a = App {
+--   unApp :: ReaderT Config m a
+-- } deriving (Functor, Applicative, Monad) -- more instances as needed
+--
+--
+-- -- These instances get even easier with lenses!
+-- instance (MonadIO m) => K.Katip (App m) where
+--   getLogEnv = asks logEnv
+--   -- with lens:
+--   -- getLogEnv = view logEnv
+--   localLogEnv f (App m) = App (local (\s -> s { logEnv = f (logEnv s)}) m)
+--   -- with lens:
+--   -- localLogEnv f (App m) = App (local (over logEnv f) m)
+--
+--
+-- instance (MonadIO m) => K.KatipContext (App m) where
+--   getKatipContext = asks logContext
+--   -- with lens:
+--   -- getKatipContext = view logContext
+--   localKatipContext f (App m) = App (local (\s -> s { logContext = f (logContext s)}) m)
+--   -- with lens:
+--   -- localKatipContext f (App m) = App (local (over logContext f) m)
+--   getKatipNamespace = asks logNamespace
+--   -- with lens:
+--   -- getKatipNamespace = view logNamespace
+--   localKatipNamespace f (App m) = App (local (\s -> s { logNamespace = f (logNamespace s)}) m)
+--   -- with lens:
+--   -- localKatipNamespace f (App m) = App (local (over logNamespace f) m)
+--
+-- @
+--
 -- To get up and running, the workflow is generally:
 --
 -- * Set up a 'LogEnv' using 'initLogEnv'.
