Closes #11
Closes #32
Closes #33
Closes #47