public DevDashboardViewModel GetViewModel()
        {
            var umbracoRepository = new UmbracoRepository();
            var dashboardViewModel = new DevDashboardViewModel();

            dashboardViewModel.HijackedRoutes =
                umbracoRepository.GetControllersAssignableFrom(typeof (IRenderMvcController), true)
                    .Select(x => new HijackedRouteViewModel
                    {
                        Name = x.Name,
                        Namespace = x.Namespace,
                        ActionMethods = x.ActionMethods,
                    })
                    .OrderBy(x => x.Name)
                    .ToList();

            dashboardViewModel.SurfaceControllers =
                umbracoRepository.GetControllersAssignableFrom(typeof(SurfaceController))
                    .Select(x => new SurfaceControllerViewModel
                    {
                        Name = x.Name,
                        Namespace = x.Namespace,
                        ActionMethods = x.ActionMethods,
                    })
                    .OrderBy(x => x.Name)
                    .ToList();

            dashboardViewModel.ApplicationEventHandlers =
                umbracoRepository.GetApplicationEventHandlers()
                    .Select(x => new ApplicationEventHandlerViewModel
                    {
                        Name = x.Name,
                        Namespace = x.Namespace,
                    })
                    .OrderBy(x => x.Name)
                    .ToList();

            dashboardViewModel.ContentFinders =
                umbracoRepository.GetContentFinders()
                    .Select(x => new ContentFinderViewModel
                    {
                        Name = x.Name,
                        Namespace = x.Namespace,
                    })
                    .OrderBy(x => x.Name)
                    .ToList();

            dashboardViewModel.CustomEvents.AddRange(GetCustomEventsForType(umbracoRepository,
                ApplicationContext.Current.Services.ContentService,
                "ContentService"));
            dashboardViewModel.CustomEvents.AddRange(GetCustomEventsForType(umbracoRepository,
                ApplicationContext.Current.Services.MediaService,
                "MediaService"));
            dashboardViewModel.CustomEvents.AddRange(GetCustomEventsForType(umbracoRepository,
                ApplicationContext.Current.Services.MemberService,
                "MemberService"));

            return dashboardViewModel;
        }