First commit. Working in imperative form. Should be able to code up a more OO solution.