introduce RPC layer