Split Protocol into Simple and Keyed as well as some abstraction