Closes #14
Closes #15
Closes #12
Closes #10