Things start to get cleaner, more refactoring to do