Closes #8, Closes #7, Closes #2, Closes #10