Assignment 2 - complete, tested, ready for submission.