Closes #7, #8, #9, #10 and #11.

Closes #7, #8, #9, #10 and #11.