Closes #4 #9 #10