great refactoring lasting many fundays