Not to wild about the entangling of the SM and DR processors that happens here and of the fishing of all the things off the protocol. Anyway we can split this more keenly? I.e. lift a skeleton of this functionality back into the client and then have more focussed call-out methods?