REFACTORING - IMPROVING THE DESIGN OF EXISTING CODE by MARTIN FOWLER , 2019