rpc design