Closes #9
Closes #54
Closes #17