A common trap in Domain-Driven Design is blindly applying patterns and complex layering with the hope of achieving clean code. However, no amount of prescriptive guidance results in automatically clean code. Refactoring is the only truly effective technique for creating highly cohesive, maintainable code. In this series, Jimmy Bogard starts with a set of procedural code with an intentionally anemic domain model and refactors it step-by-step, pushing the behavior into the domain to create an actual behavioral domain model that arose naturally through refactoring.