Closes #18
After starting/writing this protoype, I'm confident that this is a much better API. However it is still a lot of work and will probably take a few weeks/months.