Incorporating unit testing throughout, should have done this from the beginning..