Update with strict exceptions.
Expand spec
Comply with additions to spec.
Add test data.