Closes #32
Closes #35
Closes #40
Closes #46