Fix build, and also make protocol a bit more consistent and flexible (only in docs though, to be implemented)