private Type GetControllerType(String area, String controller)
        {
            String             controllerType = controller + "Controller";
            IEnumerable <Type> controllers    = ControllerTypes
                                                .Where(type => type.Name.Equals(controllerType, StringComparison.OrdinalIgnoreCase));

            if (String.IsNullOrEmpty(area))
            {
                controllers = controllers.Where(type =>
                                                !type.IsDefined(typeof(AreaAttribute), false));
            }
            else
            {
                controllers = controllers.Where(type =>
                                                type.IsDefined(typeof(AreaAttribute), false) &&
                                                String.Equals(type.GetCustomAttribute <AreaAttribute>(false).Name, area, StringComparison.OrdinalIgnoreCase));
            }

            return(controllers.Single());
        }