WIP: Reasonably major refactor

Closes #35 and starting to fix #36