Initial commit of the majority of the code and logic - not a final solution.
Includes a test.