refector

  1. Extract Method
  2. Move Method
  3. Replace Conditional with Polyorphism
  4. Self Encapsulate Field
  5. Replace type code with State/Strategy