I recently derailed (badly) while working on a simple requirement for RageFeed: new user registration. I found myself adding a lot of code to facilitate the registration workflow, but I realized I had a bigger problem when I stopped and looked at the tremendous number of test cases for my controller. I had drifted so slowly into a bad design. Fortunately, all was not lost. A design pattern from the distributed computing domain came to save the day.