private void UpdateTimeline(List <Tuple <string, DateTime> > NewInterval)
        {
            //New series collection to update actual series collection
            SeriesCollection SC = new SeriesCollection();

            List <LineSeries> ListOfMacLines = new List <LineSeries>();

            GlobalInterval.Clear();
            Mac.Clear();
            Time.Clear();
            SeriesCollection.Clear();
            TimeIntervalGlobal.Clear();
            //Insert new intervals
            GlobalInterval.AddRange(NewInterval);
            //Sort all list of itervals
            GlobalInterval.Sort((x, y) => DateTime.Compare(x.Item2, y.Item2));

            //Dictionary containing the first part of the interval detected inside global interval
            Dictionary <string, DateTime> InitializedPoints = new Dictionary <string, DateTime>();

            foreach (Tuple <string, DateTime> t in GlobalInterval)
            {
                //Check if mac is new or inside list
                if (!Mac.Contains(t.Item1))
                {
                    //Mac is new, is not inside list
                    Mac.Add(t.Item1);
                    LineSeries ls = new LineSeries();
                    ls.Title  = t.Item1;
                    ls.Values = new ChartValues <ObservablePoint>();
                    ListOfMacLines.Add(ls);
                }
                //Check if interval is already in graph
                if (!TimeIntervalGlobal.Contains(t.Item2))
                {
                    //Time value is not inside graph
                    UpdateTimeInterval(t.Item2);
                }

                //Check if first part of interval is already inside dictionary
                if (!InitializedPoints.ContainsKey(t.Item1))
                {
                    //First part of interval has been found
                    InitializedPoints.Add(t.Item1, t.Item2);
                }
                else
                {
                    //Last part of interval has been found
                    ObservablePoint p1 = new ObservablePoint(TimeIntervalGlobal.IndexOf(InitializedPoints[t.Item1]), Mac.IndexOf(t.Item1));
                    ObservablePoint p2 = new ObservablePoint(TimeIntervalGlobal.IndexOf(t.Item2), Mac.IndexOf(t.Item1));
                    //List of observable point
                    ChartValues <ObservablePoint> Values = new ChartValues <ObservablePoint>();
                    Values.Add(new ObservablePoint(double.NaN, double.NaN));
                    Values.Add(p1);
                    Values.Add(p2);
                    Values.Add(new ObservablePoint(double.NaN, double.NaN));
                    //Insert interval inside LineSeries
                    ListOfMacLines.Find(x => x.Title.CompareTo(t.Item1) == 0).Values = Values;
                }
            }
            SeriesCollection.Clear();

            foreach (LineSeries ls in ListOfMacLines)
            {
                SeriesCollection.Add(ls);
            }
        }