working on the protocol