working on protocol