Modules don't compose well

I think my initial post documented this approach, search for “Yet the controller is still making a decision about which concrete gateway the business rule is using.”