What is a Refactoring?
A structural change that improves
program design, while maintaining
behavior
Moving a method to reduce coupling
Extracting a base class with common methods
Encapsulating methods in a new delegate