Passing in the Configurator makes sense for the API, it was either this or passing in the Config in addition. The prerequisites are used only during construction of things, not per message, so saving one level of indirection sounds premature. We can put the individual things into fields if you prefer.