private Dictionary<string, List<IPeople>> GroupCategories()
        {
            // Sort categories by projects
            ReportProgress(0, "Grouping categories by projects");
            var groupedCategories = this.categories.GroupBy(x => x.Project).ToList();

            // Find people with more than 1 phase in each project
            var projects = new Dictionary<string, List<IPeople>>();
            var count = 0;
            foreach (var project in groupedCategories)
            {
                ReportProgress(count, groupedCategories.Count, string.Format("Finding multiple phases people in {0}. Completed: {1}/{2}", project.Key, count, groupedCategories.Count), 50);
                var projectPeople = new List<IPeople>();
                var phasesPeople = project.Select(x => x.Contributions.Select(y => y.Contributor).Distinct().ToList()).ToList();    // People in their phases
                var projectsDistinctPeople = phasesPeople.SelectMany(x => x).Distinct().ToList();                                              // All distinct people in the current project (from all phases)
                var multiplePhasesPeople = projectsDistinctPeople.Where(x => phasesPeople.Count(y => y.Any(z => z == x)) > 1).ToList();
                multiplePhasesPeople.ForEach(x =>
                {
                    var person = new People { Name = x };
                    person.AddProject(project.Key);
                    projectPeople.Add(person);
                });

                projects[project.Key] = projectPeople;
            }

            return projects;
        }