anchor.diff:  	$scope.$watch(function() {
   		return viewModel.selectedStep;
   	}, function(selectedStep) {
  +		configureInputsForStep(selectedStep);
  +	});
  +
  +	$scope.$watch(function() {
  +		return viewModel.selectedStep ? viewModel.selectedStep.requestedVersion() : undefined;
  +	}, function() {
  +		configureInputsForStep(viewModel.selectedStep);
  +	});
  +
  +	function configureInputsForStep(step) {
   		viewModel.inputCategoriesOfSelectedStep = [];
   
  -		if (selectedStep && selectedStep.defaultStepConfig) {
  -			_.each(selectedStep.defaultStepConfig.inputs, function(anDefaultInputConfig) {
  -				var userInputConfig = selectedStep.userStepConfig ? _.find(selectedStep.userStepConfig.inputs, function(aUserInputConfig) {
  +		if (step && step.defaultStepConfig) {
  +			_.each(step.defaultStepConfig.inputs, function(anDefaultInputConfig) {
  +				var userInputConfig = step.userStepConfig ? _.find(step.userStepConfig.inputs, function(aUserInputConfig) {
   					return Variable.keyFromVariableConfig(aUserInputConfig) == Variable.keyFromVariableConfig(anDefaultInputConfig);
   				}) : [];
   
  
positive.code: 				viewModel.openedInputs.push(anInput);
  			})
  		});
  	});
  
  	viewModel.inputCategoryToggled = function(inputCategory) {
  		if (_.contains(viewModel.openedInputCategories, inputCategory)) {
  
negative.code: 					return !anInput.userVariableConfig || angular.equals(anInput.userVariableConfig, {});
  				}, function(isUserInputConfigEmptyNow, wasUserInputConfigEmptyBefore) {
  					if (isUserInputConfigEmptyNow === true && wasUserInputConfigEmptyBefore === false) {
  						var indexOfUserInputConfig = _.findIndex(step.userStepConfig.inputs, function(aUserInputConfig) {
  							return Variable.keyFromVariableConfig(aUserInputConfig) == anInput.key();
  						});
  
  						step.userStepConfig.inputs.splice(indexOfUserInputConfig, 1);
  
  						if (angular.equals(step.userStepConfig.inputs, [])) {
  							delete step.userStepConfig["inputs"];
  						}
  					}
  
  					if (isUserInputConfigEmptyNow === false && wasUserInputConfigEmptyBefore === true) {
  						if (!step.userStepConfig.inputs) {
  							step.userStepConfig.inputs = [];
  						}
  
  						var indexOfUserInputConfig = _.findIndex(step.userStepConfig.inputs, function(aUserInputConfig) {
  							return Variable.keyFromVariableConfig(aUserInputConfig) == anInput.key();
  						});
  
  						if (indexOfUserInputConfig != -1) {
  							step.userStepConfig.inputs.splice(indexOfUserInputConfig, 1);
  						}
  
  						step.userStepConfig.inputs.push(anInput.userVariableConfig);
  					}
  				}));
  			});
  