Lots of refactoring and tests