Adding the first version of the code. (still loads of unit tests to write)