Overall refactor and spec catch-up.
Add a README