Separating the protocol from the engine in a first step to prepare for future plugable protocols.