diff --git a/CHANGES.md b/CHANGES.md
index 078f60e..5d078f2 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,10 +1,22 @@
+## v0.3.1 (2015-04-18)
+
+Various small improvements and bug fixes:
+
+ - log-ex middleware added to core api (it was a mistake that it was missing)
+ - modest improves to simple example. Better comments, layout, etc.
+ - the anonymous functions in standard middleware now have meaningful
+ names, which makes stack traces easier to understand.
+ - #24 - Fix missing paren in README
+ - #31 - Fix list formatting in README
+ - #32 - fix a broken wiki link
+ - #30 - Fix up the enrich docstring
+
## v0.3.0 (2015-04-15)
### Headline
-
- the middleware `after` and `enrich` now call the supplied function `f` with
both `db` and `v` (previously just `db`). Because javascript is so forgiving
about function arity, this change is backwards compatible.
diff --git a/README.md b/README.md
index aeb7fdd..e1b5757 100644
--- a/README.md
+++ b/README.md
@@ -670,7 +670,7 @@ Let's sketch out the situation described above ...
{:name "c" :val 23 :flag "y"}])
(def app-db (reagent/atom {:items L
- :sort-by :name}) ;; sorted by the :name attribute
+ :sort-by :name})) ;; sorted by the :name attribute
```
The subscription-handler might be written:
@@ -897,7 +897,7 @@ Collectively, event handlers provide the control logic in a re-frame application
An event handler is a pure function of two parameters:
1. current value in `app-db`. Note: that's the map **in** `app-db`, not the atom itself.
- 2 an event (represented as a vector)
+ 2. an event (represented as a vector)
It returns the new value which should be reset! into `app-db`.
diff --git a/examples/simple/example.html b/examples/simple/example.html
index a9b7c39..50b9bd6 100644
--- a/examples/simple/example.html
+++ b/examples/simple/example.html
@@ -11,7 +11,9 @@