Index: trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.Designer.cs	(revision 7956)
+++ trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.Designer.cs	(revision 7957)
@@ -46,4 +46,5 @@
     private void InitializeComponent() {
       this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CreateExperimentDialog));
       this.okButton = new System.Windows.Forms.Button();
       this.cancelButton = new System.Windows.Forms.Button();
@@ -53,6 +54,4 @@
       this.repetitionsNumericUpDown = new System.Windows.Forms.NumericUpDown();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.instancesListView = new System.Windows.Forms.ListView();
-      this.columnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
       this.experimentCreationBackgroundWorker = new System.ComponentModel.BackgroundWorker();
       this.instanceDiscoveryProgressBar = new System.Windows.Forms.ProgressBar();
@@ -66,7 +65,5 @@
       this.parametersListView = new System.Windows.Forms.ListView();
       this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
-      this.choicesLabel = new System.Windows.Forms.Label();
-      this.choicesListView = new System.Windows.Forms.ListView();
-      this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+      this.detailsTypeLabel = new System.Windows.Forms.Label();
       this.stepSizeTextBox = new System.Windows.Forms.TextBox();
       this.maximumTextBox = new System.Windows.Forms.TextBox();
@@ -75,10 +72,14 @@
       this.maximumLabel = new System.Windows.Forms.Label();
       this.minimumLabel = new System.Windows.Forms.Label();
+      this.choicesListView = new System.Windows.Forms.ListView();
+      this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
       this.instancesTabPage = new System.Windows.Forms.TabPage();
       this.label1 = new System.Windows.Forms.Label();
+      this.instancesTreeView = new System.Windows.Forms.TreeView();
       this.experimentsToCreateDescriptionLabel = new System.Windows.Forms.Label();
-      this.experimentsLabel = new System.Windows.Forms.Label();
+      this.variationsLabel = new System.Windows.Forms.Label();
       this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
       this.experimentCreationProgressBar = new System.Windows.Forms.ProgressBar();
+      this.warningProvider = new System.Windows.Forms.ErrorProvider(this.components);
       ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).BeginInit();
       this.tabControl.SuspendLayout();
@@ -90,4 +91,5 @@
       this.instancesTabPage.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).BeginInit();
       this.SuspendLayout();
       // 
@@ -149,6 +151,6 @@
       // repetitionsNumericUpDown
       // 
-      this.repetitionsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+      this.repetitionsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
       this.repetitionsNumericUpDown.Location = new System.Drawing.Point(113, 28);
       this.repetitionsNumericUpDown.Maximum = new decimal(new int[] {
@@ -174,25 +176,4 @@
       this.repetitionsNumericUpDown.Validated += new System.EventHandler(this.repetitionsNumericUpDown_Validated);
       // 
-      // instancesListView
-      // 
-      this.instancesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.instancesListView.CheckBoxes = true;
-      this.instancesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.columnHeader});
-      this.instancesListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
-      this.instancesListView.Location = new System.Drawing.Point(6, 35);
-      this.instancesListView.Name = "instancesListView";
-      this.instancesListView.Size = new System.Drawing.Size(308, 225);
-      this.instancesListView.TabIndex = 3;
-      this.instancesListView.UseCompatibleStateImageBehavior = false;
-      this.instancesListView.View = System.Windows.Forms.View.Details;
-      this.instancesListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.instancesListView_ItemChecked);
-      // 
-      // columnHeader
-      // 
-      this.columnHeader.Width = 150;
-      // 
       // experimentCreationBackgroundWorker
       // 
@@ -257,7 +238,7 @@
       // tabControl
       // 
-      this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+      this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
       this.tabControl.Controls.Add(this.parametersTabPage);
       this.tabControl.Controls.Add(this.instancesTabPage);
@@ -292,6 +273,5 @@
       // parametersSplitContainer.Panel2
       // 
-      this.parametersSplitContainer.Panel2.Controls.Add(this.choicesLabel);
-      this.parametersSplitContainer.Panel2.Controls.Add(this.choicesListView);
+      this.parametersSplitContainer.Panel2.Controls.Add(this.detailsTypeLabel);
       this.parametersSplitContainer.Panel2.Controls.Add(this.stepSizeTextBox);
       this.parametersSplitContainer.Panel2.Controls.Add(this.maximumTextBox);
@@ -300,4 +280,5 @@
       this.parametersSplitContainer.Panel2.Controls.Add(this.maximumLabel);
       this.parametersSplitContainer.Panel2.Controls.Add(this.minimumLabel);
+      this.parametersSplitContainer.Panel2.Controls.Add(this.choicesListView);
       this.parametersSplitContainer.Size = new System.Drawing.Size(314, 267);
       this.parametersSplitContainer.SplitterDistance = 124;
@@ -325,18 +306,75 @@
       this.columnHeader1.Width = 150;
       // 
-      // choicesLabel
-      // 
-      this.choicesLabel.AutoSize = true;
-      this.choicesLabel.Location = new System.Drawing.Point(13, 15);
-      this.choicesLabel.Name = "choicesLabel";
-      this.choicesLabel.Size = new System.Drawing.Size(48, 13);
-      this.choicesLabel.TabIndex = 0;
-      this.choicesLabel.Text = "Choices:";
+      // detailsTypeLabel
+      // 
+      this.detailsTypeLabel.AutoSize = true;
+      this.detailsTypeLabel.Location = new System.Drawing.Point(13, 15);
+      this.detailsTypeLabel.Name = "detailsTypeLabel";
+      this.detailsTypeLabel.Size = new System.Drawing.Size(48, 13);
+      this.detailsTypeLabel.TabIndex = 0;
+      this.detailsTypeLabel.Text = "Choices:";
+      // 
+      // stepSizeTextBox
+      // 
+      this.stepSizeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.stepSizeTextBox.Location = new System.Drawing.Point(73, 86);
+      this.stepSizeTextBox.Name = "stepSizeTextBox";
+      this.stepSizeTextBox.Size = new System.Drawing.Size(98, 20);
+      this.stepSizeTextBox.TabIndex = 5;
+      this.stepSizeTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.detailsTextBox_Validating);
+      // 
+      // maximumTextBox
+      // 
+      this.maximumTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.maximumTextBox.Location = new System.Drawing.Point(73, 60);
+      this.maximumTextBox.Name = "maximumTextBox";
+      this.maximumTextBox.Size = new System.Drawing.Size(98, 20);
+      this.maximumTextBox.TabIndex = 3;
+      this.maximumTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.detailsTextBox_Validating);
+      // 
+      // minimumTextBox
+      // 
+      this.minimumTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.minimumTextBox.Location = new System.Drawing.Point(73, 34);
+      this.minimumTextBox.Name = "minimumTextBox";
+      this.minimumTextBox.Size = new System.Drawing.Size(98, 20);
+      this.minimumTextBox.TabIndex = 1;
+      this.minimumTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.detailsTextBox_Validating);
+      // 
+      // stepSizeLabel
+      // 
+      this.stepSizeLabel.AutoSize = true;
+      this.stepSizeLabel.Location = new System.Drawing.Point(13, 89);
+      this.stepSizeLabel.Name = "stepSizeLabel";
+      this.stepSizeLabel.Size = new System.Drawing.Size(53, 13);
+      this.stepSizeLabel.TabIndex = 4;
+      this.stepSizeLabel.Text = "Step size:";
+      // 
+      // maximumLabel
+      // 
+      this.maximumLabel.AutoSize = true;
+      this.maximumLabel.Location = new System.Drawing.Point(13, 63);
+      this.maximumLabel.Name = "maximumLabel";
+      this.maximumLabel.Size = new System.Drawing.Size(54, 13);
+      this.maximumLabel.TabIndex = 2;
+      this.maximumLabel.Text = "Maximum:";
+      // 
+      // minimumLabel
+      // 
+      this.minimumLabel.AutoSize = true;
+      this.minimumLabel.Location = new System.Drawing.Point(13, 37);
+      this.minimumLabel.Name = "minimumLabel";
+      this.minimumLabel.Size = new System.Drawing.Size(51, 13);
+      this.minimumLabel.TabIndex = 0;
+      this.minimumLabel.Text = "Minimum:";
       // 
       // choicesListView
       // 
-      this.choicesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+      this.choicesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
       this.choicesListView.CheckBoxes = true;
       this.choicesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
@@ -355,61 +393,4 @@
       this.columnHeader2.Width = 150;
       // 
-      // stepSizeTextBox
-      // 
-      this.stepSizeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.stepSizeTextBox.Location = new System.Drawing.Point(73, 64);
-      this.stepSizeTextBox.Name = "stepSizeTextBox";
-      this.stepSizeTextBox.Size = new System.Drawing.Size(83, 20);
-      this.stepSizeTextBox.TabIndex = 5;
-      this.stepSizeTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.detailsTextBox_Validating);
-      // 
-      // maximumTextBox
-      // 
-      this.maximumTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.maximumTextBox.Location = new System.Drawing.Point(73, 38);
-      this.maximumTextBox.Name = "maximumTextBox";
-      this.maximumTextBox.Size = new System.Drawing.Size(83, 20);
-      this.maximumTextBox.TabIndex = 3;
-      this.maximumTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.detailsTextBox_Validating);
-      // 
-      // minimumTextBox
-      // 
-      this.minimumTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.minimumTextBox.Location = new System.Drawing.Point(73, 12);
-      this.minimumTextBox.Name = "minimumTextBox";
-      this.minimumTextBox.Size = new System.Drawing.Size(83, 20);
-      this.minimumTextBox.TabIndex = 1;
-      this.minimumTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.detailsTextBox_Validating);
-      // 
-      // stepSizeLabel
-      // 
-      this.stepSizeLabel.AutoSize = true;
-      this.stepSizeLabel.Location = new System.Drawing.Point(13, 67);
-      this.stepSizeLabel.Name = "stepSizeLabel";
-      this.stepSizeLabel.Size = new System.Drawing.Size(53, 13);
-      this.stepSizeLabel.TabIndex = 4;
-      this.stepSizeLabel.Text = "Step size:";
-      // 
-      // maximumLabel
-      // 
-      this.maximumLabel.AutoSize = true;
-      this.maximumLabel.Location = new System.Drawing.Point(13, 41);
-      this.maximumLabel.Name = "maximumLabel";
-      this.maximumLabel.Size = new System.Drawing.Size(54, 13);
-      this.maximumLabel.TabIndex = 2;
-      this.maximumLabel.Text = "Maximum:";
-      // 
-      // minimumLabel
-      // 
-      this.minimumLabel.AutoSize = true;
-      this.minimumLabel.Location = new System.Drawing.Point(13, 15);
-      this.minimumLabel.Name = "minimumLabel";
-      this.minimumLabel.Size = new System.Drawing.Size(51, 13);
-      this.minimumLabel.TabIndex = 0;
-      this.minimumLabel.Text = "Minimum:";
-      // 
       // instancesTabPage
       // 
@@ -419,5 +400,5 @@
       this.instancesTabPage.Controls.Add(this.instanceDiscoveryProgressLabel);
       this.instancesTabPage.Controls.Add(this.selectAllCheckBox);
-      this.instancesTabPage.Controls.Add(this.instancesListView);
+      this.instancesTabPage.Controls.Add(this.instancesTreeView);
       this.instancesTabPage.Location = new System.Drawing.Point(4, 22);
       this.instancesTabPage.Name = "instancesTabPage";
@@ -437,4 +418,16 @@
       this.label1.Text = "Select:";
       // 
+      // instancesTreeView
+      // 
+      this.instancesTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.instancesTreeView.CheckBoxes = true;
+      this.instancesTreeView.Location = new System.Drawing.Point(6, 35);
+      this.instancesTreeView.Name = "instancesTreeView";
+      this.instancesTreeView.Size = new System.Drawing.Size(308, 232);
+      this.instancesTreeView.TabIndex = 6;
+      this.instancesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.instancesTreeView_AfterCheck);
+      // 
       // experimentsToCreateDescriptionLabel
       // 
@@ -443,26 +436,28 @@
       this.experimentsToCreateDescriptionLabel.Location = new System.Drawing.Point(12, 364);
       this.experimentsToCreateDescriptionLabel.Name = "experimentsToCreateDescriptionLabel";
-      this.experimentsToCreateDescriptionLabel.Size = new System.Drawing.Size(112, 13);
+      this.experimentsToCreateDescriptionLabel.Size = new System.Drawing.Size(56, 13);
       this.experimentsToCreateDescriptionLabel.TabIndex = 5;
-      this.experimentsToCreateDescriptionLabel.Text = "Experiments to create:";
-      // 
-      // experimentsLabel
-      // 
-      this.experimentsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.experimentsLabel.AutoSize = true;
-      this.experimentsLabel.Location = new System.Drawing.Point(130, 364);
-      this.experimentsLabel.Name = "experimentsLabel";
-      this.experimentsLabel.Size = new System.Drawing.Size(13, 13);
-      this.experimentsLabel.TabIndex = 6;
-      this.experimentsLabel.Text = "1";
+      this.experimentsToCreateDescriptionLabel.Text = "Variations:";
+      // 
+      // variationsLabel
+      // 
+      this.variationsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.variationsLabel.AutoSize = true;
+      this.variationsLabel.Location = new System.Drawing.Point(74, 364);
+      this.variationsLabel.Name = "variationsLabel";
+      this.variationsLabel.Size = new System.Drawing.Size(13, 13);
+      this.variationsLabel.TabIndex = 6;
+      this.variationsLabel.Text = "1";
+      this.variationsLabel.TextChanged += new System.EventHandler(this.experimentsLabel_TextChanged);
       // 
       // errorProvider
       // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
       this.errorProvider.ContainerControl = this;
       // 
       // experimentCreationProgressBar
       // 
-      this.experimentCreationProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+      this.experimentCreationProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
       this.experimentCreationProgressBar.Location = new System.Drawing.Point(187, 359);
       this.experimentCreationProgressBar.Name = "experimentCreationProgressBar";
@@ -470,4 +465,10 @@
       this.experimentCreationProgressBar.TabIndex = 9;
       this.experimentCreationProgressBar.Visible = false;
+      // 
+      // warningProvider
+      // 
+      this.warningProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.warningProvider.ContainerControl = this;
+      this.warningProvider.Icon = ((System.Drawing.Icon)(resources.GetObject("warningProvider.Icon")));
       // 
       // CreateExperimentDialog
@@ -479,5 +480,5 @@
       this.ClientSize = new System.Drawing.Size(355, 394);
       this.Controls.Add(this.experimentCreationProgressBar);
-      this.Controls.Add(this.experimentsLabel);
+      this.Controls.Add(this.variationsLabel);
       this.Controls.Add(this.experimentsToCreateDescriptionLabel);
       this.Controls.Add(this.tabControl);
@@ -509,4 +510,5 @@
       this.instancesTabPage.PerformLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).EndInit();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -523,6 +525,4 @@
     private System.Windows.Forms.NumericUpDown repetitionsNumericUpDown;
     private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.ListView instancesListView;
-    private System.Windows.Forms.ColumnHeader columnHeader;
     private System.ComponentModel.BackgroundWorker experimentCreationBackgroundWorker;
     private System.Windows.Forms.ProgressBar instanceDiscoveryProgressBar;
@@ -538,6 +538,6 @@
     private System.Windows.Forms.ColumnHeader columnHeader1;
     private System.Windows.Forms.Label experimentsToCreateDescriptionLabel;
-    private System.Windows.Forms.Label experimentsLabel;
-    private System.Windows.Forms.Label choicesLabel;
+    private System.Windows.Forms.Label variationsLabel;
+    private System.Windows.Forms.Label detailsTypeLabel;
     private System.Windows.Forms.ListView choicesListView;
     private System.Windows.Forms.ColumnHeader columnHeader2;
@@ -551,4 +551,6 @@
     private System.Windows.Forms.ErrorProvider errorProvider;
     private System.Windows.Forms.ProgressBar experimentCreationProgressBar;
+    private System.Windows.Forms.ErrorProvider warningProvider;
+    private System.Windows.Forms.TreeView instancesTreeView;
 
   }
Index: trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.cs	(revision 7956)
+++ trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.cs	(revision 7957)
@@ -46,5 +46,5 @@
         okButton.Enabled = optimizer != null;
         SetTabControlVisibility();
-        FillInstanceListViewAsync();
+        FillInstanceTreeViewAsync();
         FillParametersListView();
       }
@@ -63,9 +63,10 @@
     private StringBuilder failedInstances;
     private EventWaitHandle backgroundWorkerWaitHandle = new ManualResetEvent(false);
-    private bool suppressListViewEventHandling;
+    private bool suppressTreeViewEventHandling, suppressCheckAllNoneEventHandling;
 
     public CreateExperimentDialog() : this(null) { }
     public CreateExperimentDialog(IOptimizer optimizer) {
       InitializeComponent();
+      instanceDiscoveryProgressLabel.BackColor = instancesTabPage.BackColor;
       createBatchRun = createBatchRunCheckBox.Checked;
       repetitions = (int)repetitionsNumericUpDown.Value;
@@ -85,5 +86,5 @@
     private void CreateExperimentDialog_Load(object sender, EventArgs e) {
       SetTabControlVisibility();
-      FillInstanceListViewAsync();
+      FillInstanceTreeViewAsync();
       FillParametersListView();
     }
@@ -119,5 +120,7 @@
         if (e.Item.Checked) {
           multipleChoiceParameters.Add(parameter, new HashSet<INamedItem>());
-        } else multipleChoiceParameters.Remove(parameter);
+        } else {
+          multipleChoiceParameters.Remove(parameter);
+        }
       }
 
@@ -148,4 +151,5 @@
       }
 
+      UpdateVariationsLabel();
       if (e.Item.Selected) UpdateDetailsView(parameter);
       else e.Item.Selected = true;
@@ -169,5 +173,5 @@
 
       if (isConstrainedValueParameter) {
-        choicesLabel.Visible = true;
+        detailsTypeLabel.Text = "Choices:";
         choicesListView.Enabled = true;
         choicesListView.Visible = true;
@@ -186,10 +190,13 @@
       }
 
-      minimumLabel.Visible = true; minimumTextBox.Visible = true;
-      maximumLabel.Visible = true; maximumTextBox.Visible = true;
-      stepSizeLabel.Visible = true; stepSizeTextBox.Visible = true;
+      if (!(parameter.Value is ValueTypeValue<bool>)) {
+        minimumLabel.Visible = true; minimumTextBox.Visible = true;
+        maximumLabel.Visible = true; maximumTextBox.Visible = true;
+        stepSizeLabel.Visible = true; stepSizeTextBox.Visible = true;
+      } else detailsTypeLabel.Text = "Boolean parameter: True / False";
 
       var intValue = parameter.Value as ValueTypeValue<int>;
       if (intValue != null) {
+        detailsTypeLabel.Text = "Integer parameter:";
         if (!intParameters.ContainsKey(parameter)) return;
         string min = intParameters[parameter].Item1.ToString();
@@ -202,4 +209,5 @@
       var doubleValue = parameter.Value as ValueTypeValue<double>;
       if (doubleValue != null) {
+        detailsTypeLabel.Text = "Double parameter:";
         if (!doubleParameters.ContainsKey(parameter)) return;
         string min = doubleParameters[parameter].Item1.ToString();
@@ -218,5 +226,5 @@
       } else multipleChoiceParameters[parameter].Remove((INamedItem)e.Item.Tag);
 
-      experimentsLabel.Text = GetNumberOfVariations().ToString();
+      UpdateVariationsLabel();
     }
 
@@ -257,5 +265,5 @@
       }
 
-      experimentsLabel.Text = GetNumberOfVariations().ToString();
+      UpdateVariationsLabel();
     }
     #endregion
@@ -263,12 +271,38 @@
 
     #region Instances
-    private void instancesListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
-      if (!suppressListViewEventHandling) {
-        selectAllCheckBox.Checked = instancesListView.Items.Count == instancesListView.CheckedItems.Count;
-        selectNoneCheckBox.Checked = instancesListView.CheckedItems.Count == 0;
-      }
-      var provider = (IProblemInstanceProvider)e.Item.Group.Tag;
-      var descriptor = (IDataDescriptor)e.Item.Tag;
-      if (e.Item.Checked) {
+    private void instancesTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
+      if (!suppressTreeViewEventHandling) {
+        if (e.Node.Nodes.Count > 0) { // provider node was (un)checked
+          SyncProviderNode(e.Node);
+        } else { // descriptor node was (un)checked
+          SyncInstanceNode(e.Node);
+        }
+
+        suppressCheckAllNoneEventHandling = true;
+        try {
+          var treeViewNodes = instancesTreeView.Nodes.OfType<TreeNode>().SelectMany(x => x.Nodes.OfType<TreeNode>());
+          selectAllCheckBox.Checked = treeViewNodes.Count() == instances.SelectMany(x => x.Value).Count();
+          selectNoneCheckBox.Checked = !treeViewNodes.Any(x => x.Checked);
+        } finally { suppressCheckAllNoneEventHandling = false; }
+        UpdateVariationsLabel();
+      }
+    }
+
+    private void SyncProviderNode(TreeNode node) {
+      suppressTreeViewEventHandling = true;
+      try {
+        foreach (TreeNode n in node.Nodes) {
+          if (n.Checked != node.Checked) {
+            n.Checked = node.Checked;
+            SyncInstanceNode(n, false);
+          }
+        }
+      } finally { suppressTreeViewEventHandling = false; }
+    }
+
+    private void SyncInstanceNode(TreeNode node, bool providerCheck = true) {
+      var provider = (IProblemInstanceProvider)node.Parent.Tag;
+      var descriptor = (IDataDescriptor)node.Tag;
+      if (node.Checked) {
         if (!instances.ContainsKey(provider))
           instances.Add(provider, new HashSet<IDataDescriptor>());
@@ -281,30 +315,46 @@
         }
       }
-      experimentsLabel.Text = GetNumberOfVariations().ToString();
+      if (providerCheck) {
+        bool allChecked = node.Parent.Nodes.OfType<TreeNode>().All(x => x.Checked);
+        suppressTreeViewEventHandling = true;
+        try {
+          node.Parent.Checked = allChecked;
+        } finally { suppressTreeViewEventHandling = false; }
+      }
     }
 
     private void selectAllCheckBox_CheckedChanged(object sender, EventArgs e) {
-      if (selectAllCheckBox.Checked) {
-        selectNoneCheckBox.Checked = false;
-        if (instancesListView.CheckedItems.Count == instancesListView.Items.Count) return;
-        try {
-          suppressListViewEventHandling = true;
-          foreach (var item in instancesListView.Items.OfType<ListViewItem>()) {
-            item.Checked = true;
-          }
-        } finally { suppressListViewEventHandling = false; }
+      if (!suppressCheckAllNoneEventHandling) {
+        if (selectAllCheckBox.Checked) {
+          suppressCheckAllNoneEventHandling = true;
+          try { selectNoneCheckBox.Checked = false; } finally { suppressCheckAllNoneEventHandling = false; }
+          try {
+            suppressTreeViewEventHandling = true;
+            foreach (TreeNode node in instancesTreeView.Nodes) {
+              if (!node.Checked) {
+                node.Checked = true;
+                SyncProviderNode(node);
+              }
+            }
+          } finally { suppressTreeViewEventHandling = false; }
+        }
       }
     }
 
     private void selectNoneCheckBox_CheckedChanged(object sender, EventArgs e) {
-      if (selectNoneCheckBox.Checked) {
-        selectAllCheckBox.Checked = false;
-        if (instancesListView.CheckedItems.Count == 0) return;
-        try {
-          suppressListViewEventHandling = true;
-          foreach (var item in instancesListView.Items.OfType<ListViewItem>()) {
-            item.Checked = false;
-          }
-        } finally { suppressListViewEventHandling = false; }
+      if (!suppressCheckAllNoneEventHandling) {
+        if (selectNoneCheckBox.Checked) {
+          suppressCheckAllNoneEventHandling = true;
+          try { selectAllCheckBox.Checked = false; } finally { suppressCheckAllNoneEventHandling = false; }
+          try {
+            suppressTreeViewEventHandling = true;
+            foreach (TreeNode node in instancesTreeView.Nodes) {
+              if (node.Checked) {
+                node.Checked = false;
+                SyncProviderNode(node);
+              }
+            }
+          } finally { suppressTreeViewEventHandling = false; }
+        }
       }
     }
@@ -320,4 +370,12 @@
         repetitionsNumericUpDown.Text = repetitionsNumericUpDown.Value.ToString();
       repetitions = (int)repetitionsNumericUpDown.Value;
+    }
+
+    private void experimentsLabel_TextChanged(object sender, EventArgs e) {
+      long number;
+      if (long.TryParse(variationsLabel.Text, NumberStyles.AllowThousands, CultureInfo.CurrentCulture.NumberFormat, out number)) {
+        if (number > 1000) warningProvider.SetError(variationsLabel, "Consider reducing the number of variations!");
+        else warningProvider.SetError(variationsLabel, null);
+      }
     }
     #endregion
@@ -335,9 +393,9 @@
       tabControl.Visible = isAlgorithm;
       if (isAlgorithm) {
-        experimentsLabel.Visible = true;
+        variationsLabel.Visible = true;
         experimentsToCreateDescriptionLabel.Visible = true;
         Height = 430;
       } else {
-        experimentsLabel.Visible = false;
+        variationsLabel.Visible = false;
         experimentsToCreateDescriptionLabel.Visible = false;
         Height = 130;
@@ -366,13 +424,11 @@
     }
 
-    private void FillInstanceListViewAsync() {
+    private void FillInstanceTreeViewAsync() {
       instances.Clear();
-      instancesListView.Items.Clear();
-      instancesListView.Groups.Clear();
-
-      if (Optimizer is IAlgorithm) {
+      instancesTreeView.Nodes.Clear();
+
+      if (Optimizer is IAlgorithm && ((IAlgorithm)Optimizer).Problem != null) {
         SetMode(DialogMode.DiscoveringInstances);
-        var instanceProviders = ProblemInstanceManager.GetProviders(((IAlgorithm)Optimizer).Problem);
-        instanceDiscoveryBackgroundWorker.RunWorkerAsync(instanceProviders);
+        instanceDiscoveryBackgroundWorker.RunWorkerAsync();
       }
     }
@@ -421,8 +477,8 @@
       selectAllCheckBox.Enabled = mode == DialogMode.Normal;
       selectNoneCheckBox.Enabled = mode == DialogMode.Normal;
-      instancesListView.Enabled = mode == DialogMode.Normal;
-      instancesListView.Visible = mode == DialogMode.Normal || mode == DialogMode.CreatingExperiment;
+      instancesTreeView.Enabled = mode == DialogMode.Normal;
+      instancesTreeView.Visible = mode == DialogMode.Normal || mode == DialogMode.CreatingExperiment;
       okButton.Enabled = mode == DialogMode.Normal;
-      okButton.Visible = mode == DialogMode.Normal;
+      okButton.Visible = mode != DialogMode.CreatingExperiment;
       instanceDiscoveryProgressLabel.Visible = mode == DialogMode.DiscoveringInstances;
       instanceDiscoveryProgressBar.Visible = mode == DialogMode.DiscoveringInstances;
@@ -443,5 +499,4 @@
       stepSizeTextBox.Enabled = false;
       stepSizeTextBox.Visible = false;
-      choicesLabel.Visible = false;
       choicesListView.Items.Clear();
       choicesListView.Enabled = false;
@@ -467,4 +522,8 @@
     }
 
+    private void UpdateVariationsLabel() {
+      variationsLabel.Text = GetNumberOfVariations().ToString("#,#", CultureInfo.CurrentCulture);
+    }
+
     #region Retrieve parameter combinations
     private IEnumerable<Dictionary<IValueParameter, int>> GetIntParameterConfigurations() {
@@ -575,16 +634,16 @@
     #region Instance discovery
     private void instanceDiscoveryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      var instanceProviders = ((IEnumerable<IProblemInstanceProvider>)e.Argument).ToArray();
-      var groups = new ListViewGroup[instanceProviders.Length];
+      var instanceProviders = ProblemInstanceManager.GetProviders(((IAlgorithm)Optimizer).Problem).ToArray();
+      var nodes = new TreeNode[instanceProviders.Length];
       for (int i = 0; i < instanceProviders.Length; i++) {
         var provider = instanceProviders[i];
-        groups[i] = new ListViewGroup(provider.Name, provider.Name) { Tag = provider };
-      }
-      e.Result = groups;
-      for (int i = 0; i < groups.Length; i++) {
-        var group = groups[i];
-        var provider = group.Tag as IProblemInstanceProvider;
-        double progress = (100.0 * i) / groups.Length;
-        instanceDiscoveryBackgroundWorker.ReportProgress((int)progress, provider.Name);
+        nodes[i] = new TreeNode(provider.Name) { Tag = provider };
+      }
+      e.Result = nodes;
+      for (int i = 0; i < nodes.Length; i++) {
+        var providerNode = nodes[i];
+        var provider = providerNode.Tag as IProblemInstanceProvider;
+        double progress = i / (double)nodes.Length;
+        instanceDiscoveryBackgroundWorker.ReportProgress((int)(100 * progress), provider.Name);
         var descriptors = ProblemInstanceManager.GetDataDescriptors(provider).ToArray();
         for (int j = 0; j < descriptors.Length; j++) {
@@ -595,8 +654,6 @@
           }
           #endregion
-          var d = descriptors[j];
-          progress += 1.0 / (descriptors.Length * groups.Length);
-          instanceDiscoveryBackgroundWorker.ReportProgress((int)progress, d.Name);
-          var item = new ListViewItem(d.Name, group) { Tag = d };
+          var node = new TreeNode(descriptors[j].Name) { Tag = descriptors[j] };
+          providerNode.Nodes.Add(node);
         }
       }
@@ -605,16 +662,15 @@
 
     private void instanceDiscoveryBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
-      instanceDiscoveryProgressBar.Value = e.ProgressPercentage;
+      if (instanceDiscoveryProgressBar.Value != e.ProgressPercentage)
+        instanceDiscoveryProgressBar.Value = e.ProgressPercentage;
       instanceDiscoveryProgressLabel.Text = (string)e.UserState;
+      Application.DoEvents();
     }
 
     private void instanceDiscoveryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
       try {
-        // unfortunately it's not enough to just add the groups, the items need to be added separately
-        foreach (var group in (ListViewGroup[])e.Result) {
-          instancesListView.Groups.Add(group);
-          instancesListView.Items.AddRange(group.Items);
-        }
-        instancesListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
+        instancesTreeView.Nodes.AddRange((TreeNode[])e.Result);
+        foreach (TreeNode node in instancesTreeView.Nodes)
+          node.Collapse();
         selectNoneCheckBox.Checked = true;
       } catch { }
@@ -639,5 +695,5 @@
 
       } else {
-        int counter = 0, totalInstances = instances.SelectMany(x => x.Value).Count(), totalVariations = GetNumberOfVariations();
+        int counter = 0, totalVariations = GetNumberOfVariations();
         foreach (var provider in instances.Keys) {
           foreach (var descriptor in instances[provider]) {
@@ -662,7 +718,7 @@
                 AddOptimizer(v, localExperiment);
                 counter++;
+                experimentCreationBackgroundWorker.ReportProgress((int)Math.Round(100.0 * counter / totalVariations), descriptor.Name);
               }
-              experimentCreationBackgroundWorker.ReportProgress((int)Math.Round(100.0 * counter / (totalInstances * totalVariations)), descriptor.Name);
-            } else experimentCreationBackgroundWorker.ReportProgress((int)Math.Round(100.0 * counter / (totalInstances * totalVariations)), "Loading failed (" + descriptor.Name + ")");
+            } else experimentCreationBackgroundWorker.ReportProgress((int)Math.Round(100.0 * counter / totalVariations), "Loading failed (" + descriptor.Name + ")");
           }
         }
@@ -761,4 +817,5 @@
     private void experimentCreationBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
       experimentCreationProgressBar.Value = e.ProgressPercentage;
+      Application.DoEvents();
     }
 
Index: trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.resx
===================================================================
--- trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.resx	(revision 7957)
+++ trunk/sources/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.resx	(revision 7957)
@@ -0,0 +1,188 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>394, 17</value>
+  </metadata>
+  <metadata name="experimentCreationBackgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>484, 17</value>
+  </metadata>
+  <metadata name="instanceDiscoveryBackgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>271, 17</value>
+  </metadata>
+  <metadata name="warningProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 56</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="warningProvider.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAMAEBAQAAAAAAAoAQAANgAAABAQAAABAAgAaAUAAF4BAAAQEAAAAQAgAGgEAADGBgAAKAAAABAA
+        AAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAgACAAAAAgACAAICA
+        AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wARERERERERERMAAAAAAAARP7+/v7+/
+        vwE7+/twe/v7AT+/v3B/v78BE/v7+/v78HETv7+wv7+wERE7+zA7+wcRET+/AA+/ARERE/sAC/BxERET
+        vwAPsBERERE78PsHERERET+/vwERERERE/vwcRERERETv7AREREREREzMREREf//AACAAwAAAAEAAAAB
+        AAAAAQAAgAEAAIADAADAAwAAwAcAAOAHAADgDwAA8A8AAPAfAAD4HwAA+D8AAPx/AAAoAAAAEAAAACAA
+        AAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICA
+        gADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/KgAAnyoAVZ8qAKqf
+        KgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/KgD//yoAAABVAFUA
+        VQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVfVQCqX1UA/19VAAB/
+        VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADfVQBV31UAqt9VAP/f
+        VQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8ffwAAP38AVT9/AKo/
+        fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqffwD/n38AAL9/AFW/
+        fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUAqgCqAKoA/wCqAAAf
+        qgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/qgBVf6oAqn+qAP9/
+        qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/fqgAA/6oAVf+qAKr/
+        qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/1AD/P9QAAF/UAFVf
+        1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/1ACqv9QA/7/UAADf
+        1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof/wD/H/8AAD//AFU/
+        /wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf/wCqn/8A/5//AAC/
+        /wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP//MwD//2YA//+ZAP//
+        zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/AAAA3wAAVd8AAKrf
+        AAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/KgBVPyoA8Pv/AKSg
+        oACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP2pfHx4A3x8A3wDeAN8fH39gKioqKiofFWl
+        qKioqKh8/anO+87OzvQEVc7Oys6off3QztLOzs6ALIDOys7OfIH9/anS0vvOzs7Ozs7PrAP9/f3Qz9LS
+        +6wtrM7OznyB/f39/anS0vuo8azO+84D/f39/f3Qz9LShe2p+/uAff39/f39/anT0gMEA/vOA/39/f39
+        /f3Qz9Ix7S37gH39/f39/f39/a3SgfFZ+wP9/f39/f39/f3Qz9Ks+4R9/f39/f39/f39/ajS0vt8/f39
+        /f39/f39/f3QztKoA/39/f39/f39/f39/anLqf39/f39/f39/f39/f39/f39/f39/f2AAAAAgAAAAIAA
+        AACAAAAAwAEAAMABAADgAwAA4AMAAPAHAADwBwAA+A8AAPgPAAD8HwAA/B8AAP4/AAD//wAAKAAAABAA
+        AAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEpAoFm7+bBHqX/AR1kv0EdZL9BHWR/QR1
+        kv0EeZX9A3mV/QN3k/0DdZH9BHWR/QR1kv0EdZL9A3iU/Qt3k+AEf5szB5S19wu84v8Gw+j/Arvk/wK4
+        4v8Bwuf/Aoun/0Zkev82rM//Abzj/wG03P8Btd//Arri/wG+6P8LiaryAm+LIASkzcob3Pf/GvP//wba
+        //8D2v//AOb3/wE1Ov9eAAD/YWRz/wDo//8Azfr/Ac73/xHk/P8CweX/FmR60gAAAAAAueJXGc7q+Tn/
+        /v8c8v//B+D//wPs/v8ElqP/B01P/wehsv8A5v//AM76/wza9f8V7f3/A4ak/RBnfq0AAAAAAM70Dwq+
+        4MBK8/f/Rv///xjz//8F6f//AvP//wnO5v8A7f//ANz//wLU+f8Z7/r/Cc/l/wVyjfcMa4MQAAAAAAAA
+        AAAAxOlZNtXp+W7///9A////D/3//wrQ1f8sSWD/Btnn/wDm//8N4vn/FPD8/wKMqP4MaYKuAAAAAAAA
+        AAAAAAAAANL0DhO+38Zz9vr/bv///yb///8VwsT/Xh8s/xHU3f8A8P//FfD6/wbX7P8Eco36IlVpKAAA
+        AAAAAAAAAAAAAAAAAAAAt95kTNrs/43///9F////HrK6/4EPIP8ixNH/BPz//xf3/f8Cl7L8C2qDyAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAKvWDhm83s+C+v7/af///zGGi/9gAAL/J4ua/w////8L6fX/BXOO+hle
+        cz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAstpqTd/y/33///88Y2H/TQAA/ztKVP8S////Aqy//wdu
+        idkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMHgGhfF5NRw/f//TqKg/ysfIf8wi47/Dv///wN4
+        k/kWYHZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwuFyPt7v/VX//v8d4OL/Hf79/gW4
+        xfsEco3cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALncDw7A39dB/P7/Sf///xn/
+        //8FeJL5BWyIZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArtZtJOLw/1H2
+        +P8MxNT9BXCL6yhQYAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKrUGzTH
+        4vk5zeb/BqK6yQlshl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx8AAB8fAAAA3iAAHx9gACoqMAB
+        qHzAAaio4AOofOADzvvwB8708AfOzvgPqH34D87S/A/OgPwfzsr//3yB
+</value>
+  </data>
+</root>
Index: trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj	(revision 7956)
+++ trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj	(revision 7957)
@@ -116,4 +116,7 @@
   </ItemGroup>
   <ItemGroup>
+    <EmbeddedResource Include="CreateExperimentDialog.resx">
+      <DependentUpon>CreateExperimentDialog.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Documents\GA_VRP.hl" />
     <EmbeddedResource Include="Documents\SGP_SymbClass.hl" />
