public void DataReceived(object o, RawTransponderDataEventArgs args)
        {
            //Add or update tracks
            foreach (var track in args.TransponderData)
            {
                TrackOperations.AddOrUpdate(track);
            }

            //Check if tracks are in airspace
            foreach (var track in TrackOperations.GetAll())
            {
                track.WithinAirspace = Airspace.CalculateWithinAirspace(track.Position);
            }

            //Check for Separations
            if (TrackOperations.GetAll().Count > 1)
            {
                SeparationOperations.CheckForSeparations(TrackOperations.GetAll().ToList());
            }

            //Check for outdated separations
            UpdateOldSeparations();

            //Display everything
            OutputTerminal();
        }
        public void UpdateOldSeparations()
        {
            // Find all separations
            var separationEvents = SeparationRepository.GetAll();
            // Find all tracks
            var tracks = TrackOperations.GetAll().ToList();
            // Find all tracks still on separationlist
            var possiblyOutdatedSeparations = separationEvents
                                              .Select(separations => tracks.FirstOrDefault(t => t.Tag == separations.Tag1)).ToList();
            // Find all tracks that shouldnt be on separationlist
            var outdatedSeparations = SeparationOperations.CheckForOutdatedSeparationEvents(possiblyOutdatedSeparations);

            // Now delete all of these
            foreach (string sep in outdatedSeparations)
            {
                var split = sep.Split(';');
                var separationToRemove = SeparationRepository.Get(split[0], split[1]);
                if (separationToRemove != null)
                {
                    SeparationRepository.DeleteSeperationEvent(separationToRemove);
                }
            }
        }