A lot of refactorings