code: function controllerFactory(sName, oControllerImpl, bAsync) {
  			var oController,
  				ControllerClass,
  				sOwnerId = ManagedObject._sOwnerId;
  
  			if (typeof oControllerImpl === "boolean") {
  				oControllerImpl = undefined;
  			}
  
  			if (!oControllerImpl) {
  				// controller *instantiation*
  				if (bAsync) {
  					return loadControllerClass(sName, bAsync)
  						.then(function(ControllerClass) {
  							return instantiateController(ControllerClass, sName);
  						})
  						.then(function(oController) {
  							return Controller.extendByCustomizing(oController, sName, bAsync);
  						})
  						.then(function(oController) {
  							return Controller.extendByProvider(oController, sName, sOwnerId, bAsync);
  						}).then(function(oController) {
  							oController._sapui_isExtended = true;
  							return oController;
  						});
  				} else {
  					ControllerClass = loadControllerClass(sName, bAsync);
  					oController = instantiateController(ControllerClass, sName);
  					oController = Controller.extendByCustomizing(oController, sName, bAsync);
  					oController = Controller.extendByProvider(oController, sName, sOwnerId, bAsync);
  					//if controller is created via the factory all extensions are already mixed in
  					oController._sapui_isExtended = true;
  				}
  				return oController;
  			} else {
  				// controller *definition*
  				mRegistry[sName] = oControllerImpl;
  				Log.info("For defining controllers use Controller.extend instead");
  			}
  		}
docs: /*
  Old controller factory implementation