First version that passes all of the unit tests