LOTS of refactoring