Refactoring : improving the design of existing code - Fowler, Martin, 1963- (The Addison-Wesley Object Technology Series., 2000)