Closes #10
Closes #11
Closes #12