working on protocol, mostly