public MyArtistsPageViewModel()
 {
     EndListCommand = new WGCommand(_ =>
     {
         if (TrackedArtists.SelectMany(art => art.ToList()).Count() >= _totalEntries)
         {
             return;
         }
         this.Services().Notifications.SetProgress("");
         Page++;
         this.ExecuteAsync(__ =>
         {
             this
             .BusinessServices()
             .Tracking
             .GetTrackedArtists("DavidMelo", Page)
             .Item2
             .ToList()
             .ForEach(element =>
             {
                 if (TrackedArtists.Select(e => e.Key).Contains(element.Key))
                 {
                     ReorganizeGroups(element);
                 }
                 else
                 {
                     ExecuteOnDispatcher(() =>
                                         TrackedArtists.Add(element));
                 }
             });
             this.ExecuteOnDispatcher(() =>
                                      this.Services().Notifications.ClearProgressIndicator());
         });
     });
 }
        private void ReorganizeGroups(WGGrouping <char, Artist> element)
        {
            var oldArtists = TrackedArtists.Where(e => e.Key == element.Key).SelectMany(g => g.ToList()).ToList();

            oldArtists.AddRange(element.ToList());
            var group =
                TrackedArtists.Single(
                    e => e.Key == element.Key);
            var groupindex = TrackedArtists.IndexOf(group);

            group.Group = oldArtists
                          .GroupBy(a => a.DisplayName.ToLower().First())
                          .Select(groups => new WGGrouping <char, Artist>(groups)).Single();
            ExecuteOnDispatcher(() =>
                                TrackedArtists[groupindex] = group);
        }