Refactoring-ImprovingTheDesignOfExistingCode(2002,AddisonWesley)