A lot of refactoring.