     }
 
     func clockDidTick(to time: Date) {
+        refreshUpcomingEvents()
         updateObserversWithLatestScheduleInformation()
     }
 

            }

            provideFavouritesInformationToObservers()
        }
    }

    var runningEvents: [Event] {
        let now = clock.currentDate
        return eventModels.filter { (event) -> Bool in
            return DateInterval(start: event.startDate, end: event.endDate).contains(now)
        }
    }

    var upcomingEvents: [Event] {
        let now = clock.currentDate
        let range = DateInterval(start: now, end: now.addingTimeInterval(timeIntervalForUpcomingEventsSinceNow))
        return eventModels.filter { (event) -> Bool in
            return event.startDate > now && range.contains(event.startDate)
        }
    }


    private(set) var tracks = [TrackCharacteristics]()
    private(set) var days = [ConferenceDayCharacteristics]()

    private var runningEvents: [Event] = []
    private var upcomingEvents: [Event] = []

    private(set) var eventModels = [Event]() {
        didSet {
            refreshEventProperties()
        }
    }

