Refactoring to patterns - Kerievsky, Joshua (Addison-Wesley signature series, 2005)