public ControllerExecutionContext(HttpContextBase httpContext, 
			ControllerContext controllerContext, 
			object controller, RouteData data, 
			ControllerDescriptor controllerDescriptor)
		{
			HttpContext = httpContext;
			ControllerContext = controllerContext;
			Controller = controller;
			RouteData = data;
			ControllerDescriptor = controllerDescriptor;
		}
		//TODO: needs caching (per instance)
		public ControllerDescriptor Build(Type controllerType)
		{
			string name = controllerType.Name;
			
			name = name.Substring(0, name.Length - "Controller".Length).ToLowerInvariant();

			var controllerDesc = new ControllerDescriptor(controllerType, name, string.Empty);

			foreach (var method in controllerType.GetMethods(BindingFlags.Instance | BindingFlags.Public))
			{
				var action = BuildActionDescriptor(method);

				if (action != null)
					controllerDesc.Actions.Add(action);
			}

			return controllerDesc;
		}
		public TypedControllerMeta(object controller, ControllerDescriptor controllerDescriptor) : base(controller)
		{
			ControllerDescriptor = controllerDescriptor;
		}