major changes taking place
Refactoring complete and tests all pass