I'd like to take you through a routine refactoring exercise to showcase the power that objects wield when used correctly. This is, in my opinion, the single most _satisfying_ refactoring, because it showcases how maintanability improves by fixing an improper abstraction instead of letting it fester. This exercise will also highlight a curious junction between Test Driven Development (TDD) and Domain Driven Design (DDD) - which is to say that if the functionality that you're working to refacto...