private async Task WrapTimeSeries()
        {
            if (TimeSeriesFactoryCap == null || TimeSeriesCap == null)
            {
                return;
            }

            var wts = await TimeSeriesFactoryCap.Wrap(Capnp.Rpc.Proxy.Share(TimeSeriesCap));

            if (wts == null)
            {
                return;
            }

            //store wrapper cap
            if (AlterTimeSeriesWrapperCap != wts)
            {
                AlterTimeSeriesWrapperCap?.Dispose();
            }
            AlterTimeSeriesWrapperCap = wts;

            //let wrapper point also to general time series, but dispose ref to old time series - just remote wrapper still holds ref
            if (TimeSeriesCap != AlterTimeSeriesWrapperCap)
            {
                TimeSeriesCap?.Dispose();
            }
            TimeSeriesCap = AlterTimeSeriesWrapperCap;
        }
        private async Task TimeSeriesFactoryCapabilityChanged(Climate.IAlterTimeSeriesWrapperFactory factory)
        {
            if (factory == null)
            {
                return;
            }

            if (TimeSeriesFactoryCap != factory)
            {
                TimeSeriesFactoryCap?.Dispose();
            }
            TimeSeriesFactoryCap = factory;
        }