Final code for project

Lots of work still to be done here, but this is what's completed and
cleaned up before grading.