Assignment4

Closes #20