public async Task Start(CriticalError criticalError)
        {
            var data = await LoadExchanges().ConfigureAwait(false);

            cachedExchangeCollection = new ExchangeCollection(data);

            monitorConnection = connectionConfiguration.CreateConnection("ExchangeMonitor");
            await monitorConnection.ConnectAsync().ConfigureAwait(false);

            monitor = new ExchangeMonitor(monitorConnection, OnNewVersion, criticalError);
            monitor.StartMonitoring();
        }
 void OnNewVersion(ExchangeDataCollection newData)
 {
     cachedExchangeCollection = new ExchangeCollection(newData);
 }