Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability - page 1