Closes #9
Closes #5
Closes #3
Closes #6