Closes #31
Closes #44
Closes #39
Closes #43