Final!

Final to be submitted, complete with unit tests and presentation.