Moving things around a bit.
Removing unnecessary code.
Adding value abstraction.
Working unit tests after refactoring.