lots of refactorings