bi-directional rpc