working on subprotocols