refine utility of protocol, add comments