add rpc client factory