proto rpc implementation