All the things

TODO:
- Add tests
- Flesh user instructions