refactoring as if there is no tomorrow