In his book “Understanding the Four Rules of Simple Design”, Corey Haines is talking about good design principles and teaching us how to practice them using Code Retreats. Unhappily, many of us have to do with legacy code in our daily lives, and find ourselves frustrated when we try to make legacy code better. JB Rainsberger has started a variation on Corey Haines’ code retreats, making them more practical for legacy code practitioners. I’d like to be able to use this legacy code in Java often. For this master-class, we want to learn the classic Michael Feathers dance of: 1. Identify change points 2. Find an inflection point 3. Cover the inflection point (break external dependencies, break internal dependencies, write tests) 4. Make changes 5. Refactor the covered code. We also would lay out the practicalities of having a legacy code retreat: Who comes? How should they pair? When do the pairs switch?