Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs	(revision 3558)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblem.cs	(revision 3559)
@@ -262,9 +262,5 @@
     }
     protected virtual void OnArchitectureParameterChanged(EventArgs e) {
-      var globalGrammar = FunctionTreeGrammar as GlobalSymbolicExpressionGrammar;
-      if (globalGrammar != null) {
-        globalGrammar.MaxFunctionArguments = MaxFunctionArguments.Value;
-        globalGrammar.MaxFunctionDefinitions = MaxFunctionDefiningBranches.Value;
-      }
+      UpdateGrammar();
     }
     protected virtual void OnGrammarChanged(EventArgs e) { }
@@ -356,5 +352,10 @@
     private void UpdateGrammar() {
       foreach (var varSymbol in FunctionTreeGrammar.Symbols.OfType<HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable>()) {
-        varSymbol.VariableNames = DataAnalysisProblemData.InputVariables.Select(x => x.Value);
+        varSymbol.VariableNames = DataAnalysisProblemData.InputVariables.CheckedItems.Select(x => x.Value);
+      }
+      var globalGrammar = FunctionTreeGrammar as GlobalSymbolicExpressionGrammar;
+      if (globalGrammar != null) {
+        globalGrammar.MaxFunctionArguments = MaxFunctionArguments.Value;
+        globalGrammar.MaxFunctionDefinitions = MaxFunctionDefiningBranches.Value;
       }
     }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs	(revision 3558)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblemData.cs	(revision 3559)
@@ -46,6 +46,6 @@
     }
 
-    public IValueParameter<ItemSet<StringValue>> InputVariablesParameter {
-      get { return (IValueParameter<ItemSet<StringValue>>)Parameters["InputVariables"]; }
+    public IValueParameter<CheckedItemCollection<StringValue>> InputVariablesParameter {
+      get { return (IValueParameter<CheckedItemCollection<StringValue>>)Parameters["InputVariables"]; }
     }
 
@@ -85,6 +85,6 @@
       }
     }
-    public ItemSet<StringValue> InputVariables {
-      get { return (ItemSet<StringValue>)InputVariablesParameter.Value; }
+    public CheckedItemCollection<StringValue> InputVariables {
+      get { return (CheckedItemCollection<StringValue>)InputVariablesParameter.Value; }
       set {
         if (value != InputVariables) {
@@ -140,5 +140,5 @@
       : base() {
       Parameters.Add(new ValueParameter<Dataset>("Dataset", new Dataset()));
-      Parameters.Add(new ValueParameter<ItemSet<StringValue>>("InputVariables", new ItemSet<StringValue>()));
+      Parameters.Add(new ValueParameter<CheckedItemCollection<StringValue>>("InputVariables", new CheckedItemCollection<StringValue>()));
       Parameters.Add(new ConstrainedValueParameter<StringValue>("TargetVariable"));
       Parameters.Add(new ValueParameter<IntValue>("TrainingSamplesStart", new IntValue()));
@@ -252,6 +252,11 @@
       InputVariables.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsAdded);
       InputVariables.ItemsRemoved += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsRemoved);
+      InputVariables.ItemsChecked += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<StringValue>(InputVariables_ItemsChecked);
       foreach (var item in InputVariables)
         item.ValueChanged += new EventHandler(InputVariable_ValueChanged);
+    }
+
+    void InputVariables_ItemsChecked(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<StringValue> e) {
+      OnProblemDataChanged(e);
     }
 
@@ -323,5 +328,7 @@
         ((ConstrainedValueParameter<StringValue>)TargetVariableParameter).ValidValues.Add(variableName);
       TargetVariable = variableNames.First();
-      InputVariables = new ItemSet<StringValue>(variableNames.Skip(1));
+      InputVariables = new CheckedItemCollection<StringValue>(variableNames);
+      foreach (var variableName in variableNames.Skip(1))
+        InputVariables.SetItemCheckedState(variableName, true);
       int middle = (int)(csvFileParser.Rows * 0.5);
       TrainingSamplesStart = new IntValue(0);
