Things still missing:

- Docs
- Test cases
- Test machines / versions other than my laptop :)
- A couple places in the code to tidy up.
