public static ChangeStatusViewModel Create(Project project, IProjectService projectService)
        {
            var viewModel = new ChangeStatusViewModel() {
                Project = project,
                Status = new List<KeyValuePair<int, string>>(),
                ChangeStatusProjectSteps = new List<ChangeStatusProjectStep>(),
                SquareTypes = project.ProjectSteps.Select(a => a.Step.SquareType).Distinct().ToList()
            };

            // add the 3 status'
            viewModel.Status.Add(new KeyValuePair<int, string>((int)ProjectStepStatus.Pending, ProjectStepStatus.Pending.ToString()));
            viewModel.Status.Add(new KeyValuePair<int, string>((int)ProjectStepStatus.Working, ProjectStepStatus.Working.ToString()));
            viewModel.Status.Add(new KeyValuePair<int, string>((int)ProjectStepStatus.Complete, ProjectStepStatus.Complete.ToString()));

            // populate the list of change status project steps
            viewModel.ChangeStatusProjectSteps = project.ProjectSteps.Select(a => new ChangeStatusProjectStep()
                                                            {
                                                                ProjectStepId = a.Id,
                                                                Order = a.Step.Order,
                                                                SquareType = a.Step.SquareType.Id,
                                                                Name = a.Step.Name,
                                                                CurrentStepStatus = projectService.GetStepStatus(projectStep:a),
                                                                CanEdit = true
                                                            }).ToList();

            return viewModel;
        }