the cleanest way to implement the remote/local server divide is a simply lookup table map<ChanName, ServerI>, which is used to relay all calls. For local calls, the entry is simply a pointer to the local server interface, otherwise it's the RemoteServerI