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