Should have done more design from the start..
Passing all unit tests..