This closes #40
This closes #39
This closes #97