Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/IntervalArithmeticGrammar.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/IntervalArithmeticGrammar.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/IntervalArithmeticGrammar.cs	(revision 17896)
@@ -1,3 +1,25 @@
-﻿using System.Collections.Generic;
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#endregion
+using System.Collections.Generic;
 using System.Linq;
 using HEAL.Attic;
@@ -8,5 +30,5 @@
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
   [StorableType("5A2300A0-D0FC-4F2D-B910-F86384FE9052")]
-  [Item("IntervalArithmeticGrammar", "Represents a grammar for interval arithmetic")]
+  [Item("IntervalArithmeticGrammar", "Represents a grammar for interval arithmetic which includes linear scaling parts implicitly.")]
   public class IntervalArithmeticGrammar : DataAnalysisGrammar, ISymbolicDataAnalysisGrammar {
     public IntervalArithmeticGrammar() : base(ItemAttribute.GetName(typeof(IntervalArithmeticGrammar)),
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/IntervalArithBoundsEstimator.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/IntervalArithBoundsEstimator.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/IntervalArithBoundsEstimator.cs	(revision 17896)
@@ -1,5 +1,26 @@
-﻿using System;
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#endregion
+using System;
 using System.Collections.Generic;
-using System.Collections.ObjectModel;
 using System.Linq;
 using HEAL.Attic;
@@ -34,5 +55,5 @@
     private IntervalArithBoundsEstimator(IntervalArithBoundsEstimator original, Cloner cloner) : base(original, cloner) { }
 
-    public IntervalArithBoundsEstimator() : base("IA Bounds Estimator",
+    public IntervalArithBoundsEstimator() : base("Interval Arithmetic Bounds Estimator",
       "Estimates the bounds of the model with interval arithmetic") {
       Parameters.Add(new FixedValueParameter<IntValue>(EvaluatedSolutionsParameterName,
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/IntervalArithCompiledExpressionBoundsEstimator.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/IntervalArithCompiledExpressionBoundsEstimator.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/IntervalArithCompiledExpressionBoundsEstimator.cs	(revision 17896)
@@ -1,3 +1,26 @@
-﻿using HEAL.Attic;
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#endregion
+
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -45,5 +68,5 @@
     private readonly object syncRoot = new object();
 
-    public IntervalArithCompiledExpressionBoundsEstimator() : base("Interval Arith Bounds Estimator",
+    public IntervalArithCompiledExpressionBoundsEstimator() : base("Interval Arithmetic Compiled Expression Bounds Estimator",
       "Estimates the bounds of the model with interval arithmetic, by first compiling the model into a lambda.") {
       Parameters.Add(new FixedValueParameter<IntValue>(EvaluatedSolutionsParameterName,
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/IntervalUtil.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/IntervalUtil.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/IntervalUtil.cs	(revision 17896)
@@ -1,3 +1,25 @@
-﻿using System;
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#endregion
+using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -47,5 +69,4 @@
       }
     }
-
   }
 }
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 17896)
@@ -309,16 +309,4 @@
     <Compile Include="Interfaces\IDataPreprocessorStarter.cs" />
     <Compile Include="Interfaces\IPartialDependencePlot.cs" />
-    <Compile Include="IntervalCollectionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="IntervalCollectionView.Designer.cs">
-      <DependentUpon>IntervalCollectionView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="IntervalConstraintView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="IntervalConstraintView.Designer.cs">
-      <DependentUpon>IntervalConstraintView.cs</DependentUpon>
-    </Compile>
     <Compile Include="MenuItems\ChangeDataOfOptimizersMenuItem.cs" />
     <Compile Include="MenuItems\ShrinkDataAnalysisRunsMenuItem.cs" />
@@ -353,4 +341,10 @@
       <DependentUpon>ConfidenceRegressionSolutionLineChartView.cs</DependentUpon>
     </Compile>
+    <Compile Include="Regression\IntervalCollectionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Regression\IntervalCollectionView.Designer.cs">
+      <DependentUpon>IntervalCollectionView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Regression\RegressionEnsembleSolutionModelWeightsView.cs">
       <SubType>UserControl</SubType>
@@ -443,9 +437,15 @@
       <DependentUpon>RegressionSolutionScatterPlotView.cs</DependentUpon>
     </Compile>
-    <Compile Include="ShapeConstraintsView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ShapeConstraintsView.Designer.cs">
+    <Compile Include="Regression\ShapeConstraintsView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Regression\ShapeConstraintsView.Designer.cs">
       <DependentUpon>ShapeConstraintsView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Regression\ShapeConstraintView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Regression\ShapeConstraintView.Designer.cs">
+      <DependentUpon>ShapeConstraintView.cs</DependentUpon>
     </Compile>
     <Compile Include="Solution Views\ClassificationSolutionView.cs">
@@ -603,16 +603,11 @@
       <DependentUpon>AbstractFeatureCorrelationView.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="IntervalConstraintView.resx">
-      <DependentUpon>IntervalConstraintView.cs</DependentUpon>
-    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
-    <EmbeddedResource Include="ShapeConstraintsView.resx">
-      <DependentUpon>ShapeConstraintsView.cs</DependentUpon>
-    </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
+    <EmbeddedResource Include="Resources\shapeConstraintsHelp.rtf" />
     <None Include="Resources\VS2008ImageLibrary_Annotations_Information.png" />
   </ItemGroup>
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Properties/Resources.Designer.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Properties/Resources.Designer.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Properties/Resources.Designer.cs	(revision 17896)
@@ -1,9 +1,9 @@
 ﻿//------------------------------------------------------------------------------
 // <auto-generated>
-//     Dieser Code wurde von einem Tool generiert.
-//     Laufzeitversion:4.0.30319.42000
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
 //
-//     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-//     der Code erneut generiert wird.
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
 // </auto-generated>
 //------------------------------------------------------------------------------
@@ -14,10 +14,10 @@
     
     /// <summary>
-    ///   Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
     /// </summary>
-    // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
-    // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
-    // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
-    // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -34,5 +34,5 @@
         
         /// <summary>
-        ///   Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+        ///   Returns the cached ResourceManager instance used by this class.
         /// </summary>
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
@@ -48,6 +48,6 @@
         
         /// <summary>
-        ///   Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
-        ///   Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
         /// </summary>
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
@@ -62,5 +62,21 @@
         
         /// <summary>
-        ///   Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+        ///   Looks up a localized string similar to {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang2057{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 Consolas;}{\f2\fnil\fcharset1 Cambria Math;}}
+        ///{\colortbl ;\red0\green0\blue0;}
+        ///{\*\generator Riched20 10.0.18362}{\*\mmathPr\mmathFont2\mwrapIndent1440 }\viewkind4\uc1 
+        ///\pard\sa200\sl276\slmult1\cf1\fs19\lang9 Within the text field you can define different types of shape constraints e.g. range constraints, monotonicity constraints.\par
+        ///
+        ///\pard\sl276\slmult1 To define a model constraint: \par
+        ///
+        ///\p [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string shapeConstraintsHelp_rtf {
+            get {
+                return ResourceManager.GetString("shapeConstraintsHelp.rtf", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
         /// </summary>
         internal static System.Drawing.Bitmap VS2008ImageLibrary_Annotations_Information {
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Properties/Resources.resx
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Properties/Resources.resx	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Properties/Resources.resx	(revision 17896)
@@ -119,4 +119,7 @@
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="shapeConstraintsHelp.rtf" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\shapeConstraintsHelp.rtf;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
   <data name="VS2008ImageLibrary_Annotations_Information" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\VS2008ImageLibrary_Annotations_Information.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/IntervalCollectionView.Designer.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/IntervalCollectionView.Designer.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/IntervalCollectionView.Designer.cs	(revision 17896)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/IntervalCollectionView.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/IntervalCollectionView.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/IntervalCollectionView.cs	(revision 17896)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -95,6 +95,6 @@
 
     private void SetColumnNames() {
-      dataGridView.Columns.Add("lowerBound", "Lower Bound");
-      dataGridView.Columns.Add("upperBound", "Upper Bound");
+      dataGridView.Columns.Add("lowerBound", "Lower bound");
+      dataGridView.Columns.Add("upperBound", "Upper bound");
     }
 
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.Designer.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.Designer.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.Designer.cs	(revision 17896)
@@ -1,4 +1,27 @@
-﻿namespace HeuristicLab.Problems.DataAnalysis.Views {
-  partial class IntervalConstraintView {
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+# endregion
+
+namespace HeuristicLab.Problems.DataAnalysis.Views {
+  partial class ShapeConstraintView {
     /// <summary> 
     /// Required designer variable.
@@ -11,8 +34,8 @@
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
     protected override void Dispose(bool disposing) {
-        if (disposing && (components != null)) {
-            components.Dispose();
-        }
-        base.Dispose(disposing);
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
     }
 
@@ -24,188 +47,180 @@
     /// </summary>
     private void InitializeComponent() {
-            this.components = new System.ComponentModel.Container();
-            this.lowerboundLabel = new System.Windows.Forms.Label();
-            this.upperboundLabel = new System.Windows.Forms.Label();
-            this.variableLabel = new System.Windows.Forms.Label();
-            this.numberderivationLabel = new System.Windows.Forms.Label();
-            this.upperboundInput = new System.Windows.Forms.TextBox();
-            this.lowerboundInput = new System.Windows.Forms.TextBox();
-            this.variableInput = new System.Windows.Forms.TextBox();
-            this.groupBox1 = new System.Windows.Forms.GroupBox();
-            this.weightInput = new System.Windows.Forms.TextBox();
-            this.WeightLab = new System.Windows.Forms.Label();
-            this.regionLab = new System.Windows.Forms.Label();
-            this.regionView = new HeuristicLab.Problems.DataAnalysis.Views.IntervalCollectionView();
-            this.label1 = new System.Windows.Forms.Label();
-            this.numberderivationInput = new System.Windows.Forms.ComboBox();
-            this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-            this.groupBox1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-            this.SuspendLayout();
-            // 
-            // lowerboundLabel
-            // 
-            this.lowerboundLabel.AutoSize = true;
-            this.lowerboundLabel.Location = new System.Drawing.Point(8, 101);
-            this.lowerboundLabel.Name = "lowerboundLabel";
-            this.lowerboundLabel.Size = new System.Drawing.Size(69, 13);
-            this.lowerboundLabel.TabIndex = 2;
-            this.lowerboundLabel.Text = "Lowerbound:";
-            // 
-            // upperboundLabel
-            // 
-            this.upperboundLabel.AutoSize = true;
-            this.upperboundLabel.Location = new System.Drawing.Point(8, 126);
-            this.upperboundLabel.Name = "upperboundLabel";
-            this.upperboundLabel.Size = new System.Drawing.Size(69, 13);
-            this.upperboundLabel.TabIndex = 3;
-            this.upperboundLabel.Text = "Upperbound:";
-            // 
-            // variableLabel
-            // 
-            this.variableLabel.AutoSize = true;
-            this.variableLabel.Location = new System.Drawing.Point(8, 47);
-            this.variableLabel.Name = "variableLabel";
-            this.variableLabel.Size = new System.Drawing.Size(48, 13);
-            this.variableLabel.TabIndex = 7;
-            this.variableLabel.Text = "Variable:";
-            // 
-            // numberderivationLabel
-            // 
-            this.numberderivationLabel.AutoSize = true;
-            this.numberderivationLabel.Location = new System.Drawing.Point(8, 74);
-            this.numberderivationLabel.Name = "numberderivationLabel";
-            this.numberderivationLabel.Size = new System.Drawing.Size(65, 13);
-            this.numberderivationLabel.TabIndex = 8;
-            this.numberderivationLabel.Text = "#Derivation:";
-            // 
-            // upperboundInput
-            // 
-            this.upperboundInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.upperboundInput.Location = new System.Drawing.Point(108, 123);
-            this.upperboundInput.Name = "upperboundInput";
-            this.upperboundInput.Size = new System.Drawing.Size(473, 20);
-            this.upperboundInput.TabIndex = 11;
-            this.upperboundInput.Validating += new System.ComponentModel.CancelEventHandler(this.upperboundInput_Validating);
-            this.upperboundInput.Validated += new System.EventHandler(this.upperboundInput_Validated);
-            // 
-            // lowerboundInput
-            // 
-            this.lowerboundInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.lowerboundInput.Location = new System.Drawing.Point(108, 98);
-            this.lowerboundInput.Name = "lowerboundInput";
-            this.lowerboundInput.Size = new System.Drawing.Size(473, 20);
-            this.lowerboundInput.TabIndex = 12;
-            this.lowerboundInput.Validating += new System.ComponentModel.CancelEventHandler(this.lowerboundInput_Validating);
-            this.lowerboundInput.Validated += new System.EventHandler(this.lowerboundInput_Validated);
-            // 
-            // variableInput
-            // 
-            this.variableInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.variableInput.Location = new System.Drawing.Point(108, 44);
-            this.variableInput.Name = "variableInput";
-            this.variableInput.Size = new System.Drawing.Size(473, 20);
-            this.variableInput.TabIndex = 15;
-            // 
-            // groupBox1
-            // 
-            this.groupBox1.Controls.Add(this.weightInput);
-            this.groupBox1.Controls.Add(this.WeightLab);
-            this.groupBox1.Controls.Add(this.regionLab);
-            this.groupBox1.Controls.Add(this.regionView);
-            this.groupBox1.Controls.Add(this.label1);
-            this.groupBox1.Controls.Add(this.numberderivationInput);
-            this.groupBox1.Controls.Add(this.variableInput);
-            this.groupBox1.Controls.Add(this.lowerboundInput);
-            this.groupBox1.Controls.Add(this.upperboundInput);
-            this.groupBox1.Controls.Add(this.numberderivationLabel);
-            this.groupBox1.Controls.Add(this.variableLabel);
-            this.groupBox1.Controls.Add(this.upperboundLabel);
-            this.groupBox1.Controls.Add(this.lowerboundLabel);
-            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox1.Location = new System.Drawing.Point(0, 0);
-            this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(587, 380);
-            this.groupBox1.TabIndex = 0;
-            this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Interval Constraints Detail";
-            // 
-            // weightInput
-            // 
-            this.weightInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.weightInput.Location = new System.Drawing.Point(108, 150);
-            this.weightInput.Name = "weightInput";
-            this.weightInput.Size = new System.Drawing.Size(473, 20);
-            this.weightInput.TabIndex = 33;
-            this.weightInput.TextChanged += new System.EventHandler(this.weightInput_TextChanged);
-            // 
-            // WeightLab
-            // 
-            this.WeightLab.AutoSize = true;
-            this.WeightLab.Location = new System.Drawing.Point(8, 153);
-            this.WeightLab.Name = "WeightLab";
-            this.WeightLab.Size = new System.Drawing.Size(44, 13);
-            this.WeightLab.TabIndex = 32;
-            this.WeightLab.Text = "Weight:";
-            // 
-            // regionLab
-            // 
-            this.regionLab.AutoSize = true;
-            this.regionLab.Location = new System.Drawing.Point(8, 188);
-            this.regionLab.Name = "regionLab";
-            this.regionLab.Size = new System.Drawing.Size(49, 13);
-            this.regionLab.TabIndex = 31;
-            this.regionLab.Text = "Regions:";
-            // 
-            // regionView
-            // 
-            this.regionView.Caption = "IntervalCollection View";
-            this.regionView.Content = null;
-            this.regionView.Location = new System.Drawing.Point(108, 188);
-            this.regionView.Name = "regionView";
-            this.regionView.ReadOnly = false;
-            this.regionView.Size = new System.Drawing.Size(473, 186);
-            this.regionView.TabIndex = 30;
-            this.regionView.TabStop = false;
-            // 
-            // label1
-            // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(11, -105);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(49, 13);
-            this.label1.TabIndex = 28;
-            this.label1.Text = "Enabled:";
-            // 
-            // numberderivationInput
-            // 
-            this.numberderivationInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.numberderivationInput.FormattingEnabled = true;
-            this.numberderivationInput.Location = new System.Drawing.Point(108, 71);
-            this.numberderivationInput.Name = "numberderivationInput";
-            this.numberderivationInput.Size = new System.Drawing.Size(473, 21);
-            this.numberderivationInput.TabIndex = 27;
-            this.numberderivationInput.SelectedIndexChanged += new System.EventHandler(this.numberderivationInput_SelectedIndexChanged);
-            // 
-            // errorProvider
-            // 
-            this.errorProvider.ContainerControl = this;
-            this.errorProvider.RightToLeft = true;
-            // 
-            // IntervalConstraintView
-            // 
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-            this.Controls.Add(this.groupBox1);
-            this.Name = "IntervalConstraintView";
-            this.Size = new System.Drawing.Size(587, 380);
-            this.groupBox1.ResumeLayout(false);
-            this.groupBox1.PerformLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-            this.ResumeLayout(false);
+      this.components = new System.ComponentModel.Container();
+      this.lowerboundLabel = new System.Windows.Forms.Label();
+      this.upperboundLabel = new System.Windows.Forms.Label();
+      this.variableLabel = new System.Windows.Forms.Label();
+      this.numberOfDerivationLabel = new System.Windows.Forms.Label();
+      this.upperboundInput = new System.Windows.Forms.TextBox();
+      this.lowerboundInput = new System.Windows.Forms.TextBox();
+      this.variableInput = new System.Windows.Forms.TextBox();
+      this.groupBox = new System.Windows.Forms.GroupBox();
+      this.weightTextBox = new System.Windows.Forms.TextBox();
+      this.weightLabel = new System.Windows.Forms.Label();
+      this.regionLabel = new System.Windows.Forms.Label();
+      this.regionView = new HeuristicLab.Problems.DataAnalysis.Views.IntervalCollectionView();
+      this.numberOfDerivationsComboBox = new System.Windows.Forms.ComboBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.groupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // lowerboundLabel
+      // 
+      this.lowerboundLabel.AutoSize = true;
+      this.lowerboundLabel.Location = new System.Drawing.Point(8, 75);
+      this.lowerboundLabel.Name = "lowerboundLabel";
+      this.lowerboundLabel.Size = new System.Drawing.Size(72, 13);
+      this.lowerboundLabel.TabIndex = 4;
+      this.lowerboundLabel.Text = "Lower bound:";
+      // 
+      // upperboundLabel
+      // 
+      this.upperboundLabel.AutoSize = true;
+      this.upperboundLabel.Location = new System.Drawing.Point(8, 101);
+      this.upperboundLabel.Name = "upperboundLabel";
+      this.upperboundLabel.Size = new System.Drawing.Size(72, 13);
+      this.upperboundLabel.TabIndex = 6;
+      this.upperboundLabel.Text = "Upper bound:";
+      // 
+      // variableLabel
+      // 
+      this.variableLabel.AutoSize = true;
+      this.variableLabel.Location = new System.Drawing.Point(8, 22);
+      this.variableLabel.Name = "variableLabel";
+      this.variableLabel.Size = new System.Drawing.Size(48, 13);
+      this.variableLabel.TabIndex = 0;
+      this.variableLabel.Text = "Variable:";
+      // 
+      // numberderivationLabel
+      // 
+      this.numberOfDerivationLabel.AutoSize = true;
+      this.numberOfDerivationLabel.Location = new System.Drawing.Point(8, 48);
+      this.numberOfDerivationLabel.Name = "numberderivationLabel";
+      this.numberOfDerivationLabel.Size = new System.Drawing.Size(58, 13);
+      this.numberOfDerivationLabel.TabIndex = 2;
+      this.numberOfDerivationLabel.Text = "Derivative:";
+      // 
+      // upperboundInput
+      // 
+      this.upperboundInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.upperboundInput.Location = new System.Drawing.Point(86, 98);
+      this.upperboundInput.Name = "upperboundInput";
+      this.upperboundInput.Size = new System.Drawing.Size(495, 20);
+      this.upperboundInput.TabIndex = 7;
+      this.upperboundInput.Validating += new System.ComponentModel.CancelEventHandler(this.upperboundInput_Validating);
+      this.upperboundInput.Validated += new System.EventHandler(this.upperboundInput_Validated);
+      // 
+      // lowerboundInput
+      // 
+      this.lowerboundInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.lowerboundInput.Location = new System.Drawing.Point(86, 72);
+      this.lowerboundInput.Name = "lowerboundInput";
+      this.lowerboundInput.Size = new System.Drawing.Size(495, 20);
+      this.lowerboundInput.TabIndex = 5;
+      this.lowerboundInput.Validating += new System.ComponentModel.CancelEventHandler(this.lowerboundInput_Validating);
+      this.lowerboundInput.Validated += new System.EventHandler(this.lowerboundInput_Validated);
+      // 
+      // variableInput
+      // 
+      this.variableInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.variableInput.Location = new System.Drawing.Point(86, 19);
+      this.variableInput.Name = "variableInput";
+      this.variableInput.Size = new System.Drawing.Size(495, 20);
+      this.variableInput.TabIndex = 1;
+      // 
+      // groupBox
+      // 
+      this.groupBox.Controls.Add(this.weightTextBox);
+      this.groupBox.Controls.Add(this.weightLabel);
+      this.groupBox.Controls.Add(this.regionLabel);
+      this.groupBox.Controls.Add(this.regionView);
+      this.groupBox.Controls.Add(this.numberOfDerivationsComboBox);
+      this.groupBox.Controls.Add(this.variableInput);
+      this.groupBox.Controls.Add(this.lowerboundInput);
+      this.groupBox.Controls.Add(this.upperboundInput);
+      this.groupBox.Controls.Add(this.numberOfDerivationLabel);
+      this.groupBox.Controls.Add(this.variableLabel);
+      this.groupBox.Controls.Add(this.upperboundLabel);
+      this.groupBox.Controls.Add(this.lowerboundLabel);
+      this.groupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox.Location = new System.Drawing.Point(0, 0);
+      this.groupBox.Name = "groupBox";
+      this.groupBox.Size = new System.Drawing.Size(587, 380);
+      this.groupBox.TabIndex = 0;
+      this.groupBox.TabStop = false;
+      this.groupBox.Text = "Shape Constraint Detail";
+      // 
+      // weightInput
+      // 
+      this.weightTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.weightTextBox.Location = new System.Drawing.Point(86, 124);
+      this.weightTextBox.Name = "weightInput";
+      this.weightTextBox.Size = new System.Drawing.Size(495, 20);
+      this.weightTextBox.TabIndex = 9;
+      this.weightTextBox.TextChanged += new System.EventHandler(this.weightInput_TextChanged);
+      // 
+      // WeightLab
+      // 
+      this.weightLabel.AutoSize = true;
+      this.weightLabel.Location = new System.Drawing.Point(8, 127);
+      this.weightLabel.Name = "WeightLab";
+      this.weightLabel.Size = new System.Drawing.Size(44, 13);
+      this.weightLabel.TabIndex = 8;
+      this.weightLabel.Text = "Weight:";
+      // 
+      // regionLab
+      // 
+      this.regionLabel.AutoSize = true;
+      this.regionLabel.Location = new System.Drawing.Point(8, 150);
+      this.regionLabel.Name = "regionLab";
+      this.regionLabel.Size = new System.Drawing.Size(49, 13);
+      this.regionLabel.TabIndex = 10;
+      this.regionLabel.Text = "Regions:";
+      // 
+      // regionView
+      // 
+      this.regionView.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.regionView.Caption = "IntervalCollection View";
+      this.regionView.Content = null;
+      this.regionView.Location = new System.Drawing.Point(86, 150);
+      this.regionView.Name = "regionView";
+      this.regionView.ReadOnly = false;
+      this.regionView.Size = new System.Drawing.Size(495, 224);
+      this.regionView.TabIndex = 11;
+      this.regionView.TabStop = false;
+      // 
+      // numberderivationInput
+      // 
+      this.numberOfDerivationsComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.numberOfDerivationsComboBox.FormattingEnabled = true;
+      this.numberOfDerivationsComboBox.Location = new System.Drawing.Point(86, 45);
+      this.numberOfDerivationsComboBox.Name = "numberderivationInput";
+      this.numberOfDerivationsComboBox.Size = new System.Drawing.Size(495, 21);
+      this.numberOfDerivationsComboBox.TabIndex = 3;
+      this.numberOfDerivationsComboBox.SelectedIndexChanged += new System.EventHandler(this.numberderivationInput_SelectedIndexChanged);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.ContainerControl = this;
+      this.errorProvider.RightToLeft = true;
+      // 
+      // ShapeConstraintView
+      // 
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.groupBox);
+      this.Name = "ShapeConstraintView";
+      this.Size = new System.Drawing.Size(587, 380);
+      this.groupBox.ResumeLayout(false);
+      this.groupBox.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
 
     }
@@ -213,19 +228,18 @@
     #endregion
 
-    private System.Windows.Forms.Label         lowerboundLabel;
-    private System.Windows.Forms.Label         upperboundLabel;
-    private System.Windows.Forms.Label         variableLabel;
-    private System.Windows.Forms.Label         numberderivationLabel;
-    private System.Windows.Forms.TextBox       upperboundInput;
-    private System.Windows.Forms.TextBox       lowerboundInput;
-    private System.Windows.Forms.TextBox       variableInput;
-    private System.Windows.Forms.GroupBox      groupBox1;
+    private System.Windows.Forms.Label lowerboundLabel;
+    private System.Windows.Forms.Label upperboundLabel;
+    private System.Windows.Forms.Label variableLabel;
+    private System.Windows.Forms.Label numberOfDerivationLabel;
+    private System.Windows.Forms.TextBox upperboundInput;
+    private System.Windows.Forms.TextBox lowerboundInput;
+    private System.Windows.Forms.TextBox variableInput;
+    private System.Windows.Forms.GroupBox groupBox;
     private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.ComboBox      numberderivationInput;
-    private System.Windows.Forms.Label         label1;
+    private System.Windows.Forms.ComboBox numberOfDerivationsComboBox;
     private IntervalCollectionView regionView;
-    private System.Windows.Forms.Label regionLab;
-        private System.Windows.Forms.TextBox weightInput;
-        private System.Windows.Forms.Label WeightLab;
-    }
+    private System.Windows.Forms.Label regionLabel;
+    private System.Windows.Forms.TextBox weightTextBox;
+    private System.Windows.Forms.Label weightLabel;
+  }
 }
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.cs	(revision 17896)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -29,7 +29,7 @@
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
-  [View("Interval Constraint Detail View")]
+  [View("Shape Constraint View")]
   [Content(typeof(ShapeConstraint), true)]
-  public sealed partial class IntervalConstraintView : ItemView {
+  public sealed partial class ShapeConstraintView : ItemView {
     public new ShapeConstraint Content {
       get => (ShapeConstraint)base.Content;
@@ -37,8 +37,8 @@
     }
 
-    public IntervalConstraintView() {
+    public ShapeConstraintView() {
       InitializeComponent();
       int[] items = { 1, 2, 3 };
-      numberderivationInput.DataSource = items;
+      numberOfDerivationsComboBox.DataSource = items;
     }
 
@@ -62,8 +62,8 @@
       base.SetEnabledStateOfControls();
       variableInput.Enabled = Content != null && !Locked && !ReadOnly;
-      numberderivationInput.Enabled = Content != null && !Locked && !ReadOnly;
+      numberOfDerivationsComboBox.Enabled = Content != null && !Locked && !ReadOnly;
       lowerboundInput.Enabled = Content != null && !Locked && !ReadOnly;
       upperboundInput.Enabled = Content != null && !Locked && !ReadOnly;
-      weightInput.Enabled = Content != null && !Locked && !ReadOnly;
+      weightTextBox.Enabled = Content != null && !Locked && !ReadOnly;
     }
 
@@ -96,5 +96,5 @@
         lowerboundInput.Text = string.Empty;
         upperboundInput.Text = string.Empty;
-        weightInput.Text = string.Empty;
+        weightTextBox.Text = string.Empty;
         return;
       }
@@ -102,16 +102,16 @@
       lowerboundInput.Text = Content.Interval.LowerBound.ToString();
       upperboundInput.Text = Content.Interval.UpperBound.ToString();
-      weightInput.Text = Content.Weight.ToString();
+      weightTextBox.Text = Content.Weight.ToString();
 
       variableInput.Text = Content.Variable;
       if (!Content.IsDerivative) {
-        numberderivationInput.Enabled = false;
-        numberderivationInput.SelectedItem = null;
-        numberderivationInput.Text = "0";
+        numberOfDerivationsComboBox.Enabled = false;
+        numberOfDerivationsComboBox.SelectedItem = null;
+        numberOfDerivationsComboBox.Text = "0";
       } else {
-        numberderivationLabel.Visible = true;
-        numberderivationInput.Visible = true;
-        numberderivationInput.Enabled = true;
-        numberderivationInput.SelectedItem = Content.NumberOfDerivations;
+        numberOfDerivationLabel.Visible = true;
+        numberOfDerivationsComboBox.Visible = true;
+        numberOfDerivationsComboBox.Enabled = true;
+        numberOfDerivationsComboBox.SelectedItem = Content.NumberOfDerivations;
       }
 
@@ -172,20 +172,20 @@
 
     private void numberderivationInput_SelectedIndexChanged(object sender, EventArgs e) {
-      if (numberderivationInput.SelectedItem == null) {
+      if (numberOfDerivationsComboBox.SelectedItem == null) {
         Content.NumberOfDerivations = 0;
-        numberderivationInput.Enabled = false;
-        return;
-      }
-
-      if ((int)numberderivationInput.SelectedItem == 1)
+        numberOfDerivationsComboBox.Enabled = false;
+        return;
+      }
+
+      if ((int)numberOfDerivationsComboBox.SelectedItem == 1)
         Content.NumberOfDerivations = 1;
-      else if ((int)numberderivationInput.SelectedItem == 2)
+      else if ((int)numberOfDerivationsComboBox.SelectedItem == 2)
         Content.NumberOfDerivations = 2;
-      else if ((int)numberderivationInput.SelectedItem == 3)
+      else if ((int)numberOfDerivationsComboBox.SelectedItem == 3)
         Content.NumberOfDerivations = 3;
     }
 
     private void weightInput_TextChanged(object sender, EventArgs e) {
-      var value = ParseDoubleValue(weightInput.Text, weightInput, errorProvider);
+      var value = ParseDoubleValue(weightTextBox.Text, weightTextBox, errorProvider);
       if (!double.IsNaN(value)) Content.Weight = value;
     }
Index: anches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.resx
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintView.resx	(revision 17895)
+++ 	(revision )
@@ -1,123 +1,0 @@
-﻿<?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="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.Designer.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.Designer.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.Designer.cs	(revision 17896)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -52,49 +52,49 @@
     private void InitializeComponent() {
             this.components = new System.ComponentModel.Container();
-            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
-            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.splitContainer = new System.Windows.Forms.SplitContainer();
+            this.groupBox = new System.Windows.Forms.GroupBox();
             this.constraintsInput = new System.Windows.Forms.TextBox();
             this.parseBtn = new System.Windows.Forms.Button();
-            this.label1 = new System.Windows.Forms.Label();
+            this.infoLabel = new System.Windows.Forms.Label();
             this.errorOutput = new System.Windows.Forms.Label();
-            this.intervalConstraintsView = new HeuristicLab.Core.Views.CheckedItemListView<ShapeConstraint>();
-            this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
-            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
-            this.splitContainer1.Panel1.SuspendLayout();
-            this.splitContainer1.Panel2.SuspendLayout();
-            this.splitContainer1.SuspendLayout();
-            this.groupBox1.SuspendLayout();
+            this.shapeConstraintsView = new HeuristicLab.Core.Views.CheckedItemListView<ShapeConstraint>();
+            this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
+            this.splitContainer.Panel1.SuspendLayout();
+            this.splitContainer.Panel2.SuspendLayout();
+            this.splitContainer.SuspendLayout();
+            this.groupBox.SuspendLayout();
             this.SuspendLayout();
             // 
             // splitContainer1
             // 
-            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.splitContainer1.Location = new System.Drawing.Point(0, 0);
-            this.splitContainer1.Name = "splitContainer1";
+            this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer.Location = new System.Drawing.Point(0, 0);
+            this.splitContainer.Name = "splitContainer1";
             // 
             // splitContainer1.Panel1
             // 
-            this.splitContainer1.Panel1.Controls.Add(this.groupBox1);
+            this.splitContainer.Panel1.Controls.Add(this.groupBox);
             // 
             // splitContainer1.Panel2
             // 
-            this.splitContainer1.Panel2.Controls.Add(this.intervalConstraintsView);
-            this.splitContainer1.Size = new System.Drawing.Size(888, 629);
-            this.splitContainer1.SplitterDistance = 296;
-            this.splitContainer1.TabIndex = 0;
+            this.splitContainer.Panel2.Controls.Add(this.shapeConstraintsView);
+            this.splitContainer.Size = new System.Drawing.Size(888, 629);
+            this.splitContainer.SplitterDistance = 296;
+            this.splitContainer.TabIndex = 0;
             // 
             // groupBox1
             // 
-            this.groupBox1.Controls.Add(this.constraintsInput);
-            this.groupBox1.Controls.Add(this.parseBtn);
-            this.groupBox1.Controls.Add(this.label1);
-            this.groupBox1.Controls.Add(this.errorOutput);
-            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox1.Location = new System.Drawing.Point(0, 0);
-            this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(296, 629);
-            this.groupBox1.TabIndex = 3;
-            this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Constraints Input";
+            this.groupBox.Controls.Add(this.constraintsInput);
+            this.groupBox.Controls.Add(this.parseBtn);
+            this.groupBox.Controls.Add(this.infoLabel);
+            this.groupBox.Controls.Add(this.errorOutput);
+            this.groupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.groupBox.Location = new System.Drawing.Point(0, 0);
+            this.groupBox.Name = "groupBox1";
+            this.groupBox.Size = new System.Drawing.Size(296, 629);
+            this.groupBox.TabIndex = 3;
+            this.groupBox.TabStop = false;
+            this.groupBox.Text = "Constraints Input";
             // 
             // constraintsInput
@@ -123,14 +123,14 @@
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.Dock = System.Windows.Forms.DockStyle.Top;
-            this.label1.Image = global::HeuristicLab.Problems.DataAnalysis.Views.Properties.Resources.VS2008ImageLibrary_Annotations_Information;
-            this.label1.Location = new System.Drawing.Point(3, 16);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(19, 13);
-            this.label1.TabIndex = 4;
-            this.label1.Text = "    ";
-            this.toolTip1.SetToolTip(this.label1, "Double-click to open description.");
-            this.label1.DoubleClick += new System.EventHandler(this.label1_DoubleClick);
+            this.infoLabel.AutoSize = true;
+            this.infoLabel.Dock = System.Windows.Forms.DockStyle.Top;
+            this.infoLabel.Image = global::HeuristicLab.Problems.DataAnalysis.Views.Properties.Resources.VS2008ImageLibrary_Annotations_Information;
+            this.infoLabel.Location = new System.Drawing.Point(3, 16);
+            this.infoLabel.Name = "label1";
+            this.infoLabel.Size = new System.Drawing.Size(19, 13);
+            this.infoLabel.TabIndex = 4;
+            this.infoLabel.Text = "    ";
+            this.toolTip.SetToolTip(this.infoLabel, "Double-click to open description.");
+            this.infoLabel.DoubleClick += new System.EventHandler(this.helpButton_DoubleClick);
             // 
             // errorOutput
@@ -148,10 +148,10 @@
             // intervalConstraintsView
             // 
-            this.intervalConstraintsView.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.intervalConstraintsView.Location = new System.Drawing.Point(0, 0);
-            this.intervalConstraintsView.Name = "intervalConstraintsView";
-            this.intervalConstraintsView.Size = new System.Drawing.Size(588, 629);
-            this.intervalConstraintsView.TabIndex = 2;
-            this.intervalConstraintsView.TabStop = false;
+            this.shapeConstraintsView.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.shapeConstraintsView.Location = new System.Drawing.Point(0, 0);
+            this.shapeConstraintsView.Name = "intervalConstraintsView";
+            this.shapeConstraintsView.Size = new System.Drawing.Size(588, 629);
+            this.shapeConstraintsView.TabIndex = 2;
+            this.shapeConstraintsView.TabStop = false;
             // 
             // ShapeConstraintsView
@@ -159,13 +159,13 @@
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.Controls.Add(this.splitContainer1);
+            this.Controls.Add(this.splitContainer);
             this.Name = "ShapeConstraintsView";
             this.Size = new System.Drawing.Size(888, 629);
-            this.splitContainer1.Panel1.ResumeLayout(false);
-            this.splitContainer1.Panel2.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
-            this.splitContainer1.ResumeLayout(false);
-            this.groupBox1.ResumeLayout(false);
-            this.groupBox1.PerformLayout();
+            this.splitContainer.Panel1.ResumeLayout(false);
+            this.splitContainer.Panel2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
+            this.splitContainer.ResumeLayout(false);
+            this.groupBox.ResumeLayout(false);
+            this.groupBox.PerformLayout();
             this.ResumeLayout(false);
 
@@ -173,13 +173,12 @@
     #endregion
 
-    private System.Windows.Forms.SplitContainer splitContainer1;
-    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.SplitContainer splitContainer;
+    private System.Windows.Forms.GroupBox groupBox;
     private System.Windows.Forms.Button parseBtn;
-    private HeuristicLab.Core.Views.CheckedItemListView<ShapeConstraint> intervalConstraintsView;
-    //private System.Windows.Forms.GroupBox intervalConstraintsView;
+    private HeuristicLab.Core.Views.CheckedItemListView<ShapeConstraint> shapeConstraintsView;
     private System.Windows.Forms.TextBox constraintsInput;
     private Label errorOutput;
-    private Label label1;
-    protected ToolTip toolTip1;
+    private Label infoLabel;
+    protected ToolTip toolTip;
     }
 }
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.cs	(revision 17896)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -48,5 +48,5 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      this.intervalConstraintsView.Content = Content;
+      this.shapeConstraintsView.Content = Content;
       UpdateControl();
     }
@@ -86,15 +86,13 @@
         try {
           var parsedConstraints = ShapeConstraintsParser.ParseConstraints(constraintsInput.Text);
-          Content = parsedConstraints;
+          Content.AddRange(parsedConstraints);
           errorOutput.Text = "Constraints successfully parsed.";
           errorOutput.ForeColor = Color.DarkGreen;
-          //Catch the exception from the constraints parser and show it in the error dialog
         } catch (ArgumentException ex) {
-          Content.Clear();
           errorOutput.Text = ex.Message.Replace("Parameter name", "@Line");
           errorOutput.ForeColor = Color.DarkRed;
+        } finally {
+          suspendUpdates = false;
         }
-        suspendUpdates = false;
-        UpdateControl();
       } else {
         errorOutput.Text = "No constraints were found!";
@@ -107,6 +105,7 @@
         constraintsInput.Text = string.Empty;
       } else {
-        this.intervalConstraintsView.Content = Content;
-        constraintsInput.Text = ToString(Content);
+        var newText = ToString(Content);
+        if (newText != constraintsInput.Text)
+          constraintsInput.Text = newText;
       }
     }
@@ -168,23 +167,10 @@
     }
 
-    private void label1_DoubleClick(object sender, EventArgs e) {
-      var infoText =
-        "Within the text field you can define different types of shape constraints e.g. range constraints, monotonicity constraints, ..." +
-        System.Environment.NewLine +
-        "To define a model constraint: f in [0 .. 100], f is used for the selected target, the 'in' key word specifies the target in which the constraint should be, the interval is defined between square bracket." +
-        System.Environment.NewLine +
-        "The interval contains two bounds (lower and upper) this bounds are given as double values, to seperate both bounds from each other you can use (.., ;, ' ')" +
-        System.Environment.NewLine +
-        "To define monotonic or concave constraints you need to define the partial derivatives:" +
-        System.Environment.NewLine +
-        "∂f/∂x in [0 .. 1], therefore you have to define the partial fraction first, which can be done by using the \\partial symbol or 'd' followed by the target and the variable in the numerator and denominator respectively, after defining the fraction the interval is defined like in the model constraint." +
-        System.Environment.NewLine +
-        "To define constraints only on a specific range of the function you can define interval ranges" +
-        System.Environment.NewLine +
-        "f in [0 .. 100], x in [0 .. 1] the ranges are separated by commas and follow the same rules as before (giving the variable with the interval definition)" +
-        System.Environment.NewLine + "To specify different weights on the constraints:" +
-        System.Environment.NewLine + "f in [0 .. 100], x in [0 .. 1] weight: 2.0, you can add the keyword 'weight:' followed by a double value.";
-
-      MessageBox.Show(infoText,"How to define shape constraints", MessageBoxButtons.OKCancel);
+    private void helpButton_DoubleClick(object sender, EventArgs e) {
+      using (InfoBox dialog = new InfoBox("Help for shape constraints",
+        "HeuristicLab.Problems.DataAnalysis.Views.Resources.shapeConstraintsHelp.rtf",
+        this)) {
+        dialog.ShowDialog(this);
+      }
     }
   }
Index: anches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.resx
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ShapeConstraintsView.resx	(revision 17895)
+++ 	(revision )
@@ -1,126 +1,0 @@
-﻿<?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="label1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/Interval.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/Interval.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/Interval.cs	(revision 17896)
@@ -25,5 +25,4 @@
 using HEAL.Attic;
 using HeuristicLab.Common;
-using HeuristicLab.Core;
 
 namespace HeuristicLab.Problems.DataAnalysis {
@@ -131,6 +130,6 @@
         return false;
 
-      return (UpperBound.IsAlmost(other.UpperBound) || (double.IsNaN(UpperBound) && double.IsNaN(other.UpperBound)))
-        && (LowerBound.IsAlmost(other.LowerBound) || (double.IsNaN(LowerBound) && double.IsNaN(other.LowerBound)));
+      return (UpperBound==other.UpperBound || (double.IsNaN(UpperBound) && double.IsNaN(other.UpperBound)))
+        && (LowerBound==other.LowerBound || (double.IsNaN(LowerBound) && double.IsNaN(other.LowerBound)));
     }
 
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalCollection.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalCollection.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/IntervalCollection.cs	(revision 17896)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/ShapeConstraint.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/ShapeConstraint.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/ShapeConstraint.cs	(revision 17896)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -30,20 +30,4 @@
   [Item("ShapeConstraint", "Constraint on the shape of a function e.g. monotonicity.")]
   public sealed class ShapeConstraint : Item {
-    // [Storable]
-    // private string expression;
-    // 
-    // public string Expression {
-    //   get => expression;
-    //   private set {
-    //     if (expression == value)
-    //       return;
-    //     expression = value;
-    //     OnChanged();
-    //     OnToStringChanged();
-    //   }
-    // }
-
-    // public string Definition => GetDefinitionString();
-
     [Storable]
     private string variable;
@@ -55,20 +39,8 @@
           return;
         variable = value;
+        OnToStringChanged();
         OnChanged();
       }
     }
-
-    // [Storable]
-    // private string target;
-    // 
-    // public string Target {
-    //   get => target;
-    //   private set {
-    //     if (target == value)
-    //       return;
-    //     target = value;
-    //     OnChanged();
-    //   }
-    // }
 
     public bool IsDerivative => NumberOfDerivations > 0;
@@ -85,4 +57,5 @@
           return;
         numberOfDerivations = value;
+        OnToStringChanged();
         OnChanged();
       }
@@ -98,20 +71,8 @@
           return;
         interval = value;
+        OnToStringChanged();
         OnChanged();
       }
     }
-
-    // [Storable]
-    // private bool enabled;
-    // 
-    // public bool Enabled {
-    //   get => enabled;
-    //   set {
-    //     if (enabled == value)
-    //       return;
-    //     enabled = value;
-    //     OnChanged();
-    //   }
-    // }
 
     [Storable]
@@ -121,9 +82,13 @@
       set {
         if (regions != value) {
+          if (regions != null) regions.Changed -= regions_Changed;
           regions = value;
+          if (regions != null) regions.Changed += regions_Changed;
+          OnToStringChanged();
           OnChanged();
         }
       }
     }
+
 
     [Storable]
@@ -134,4 +99,5 @@
         if (weight != value) {
           weight = value;
+          OnToStringChanged();
           OnChanged();
         }
@@ -141,4 +107,9 @@
     [StorableConstructor]
     private ShapeConstraint(StorableConstructorFlag _) : base(_) { }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      if (regions != null) regions.Changed += regions_Changed;
+    }
 
     // without derivation
@@ -158,10 +129,9 @@
     public ShapeConstraint(string variable, int numberOfDerivations,
                               Interval interval, IntervalCollection regions, double weight) {
-      this.regions = regions;
-      this.weight = weight;
-      this.variable = variable;
-      this.numberOfDerivations = numberOfDerivations;
-      this.interval = interval;
-      //this.enabled = enabled;
+      Variable = variable;
+      NumberOfDerivations = numberOfDerivations;
+      Interval = interval;
+      Regions = regions;
+      Weight = weight;
     }
 
@@ -172,9 +142,9 @@
     private ShapeConstraint(ShapeConstraint original, Cloner cloner)
       : base(original, cloner) {
-      Regions = original.Regions;
       Variable = original.Variable;
       NumberOfDerivations = original.NumberOfDerivations;
       Interval = original.Interval;
-      //Enabled = original.Enabled;
+      Regions = cloner.Clone(original.Regions);
+      Weight = original.weight;
     }
 
@@ -188,11 +158,8 @@
 
 
-    // private string GetDefinitionString() {
-    //   if (!IsDerivative) return "Target " + Variable;
-    // 
-    //   var definition =
-    //     $"∂{GetDerivationString(numberOfDerivations)}Target/∂{Variable}{GetDerivationString(numberOfDerivations)}";
-    //   return definition;
-    // }
+    private void regions_Changed(object sender, EventArgs e) {
+      OnToStringChanged();
+      OnChanged();
+    }
 
     public override string ToString() {
@@ -231,5 +198,5 @@
           expression += $", {region.Key} in [{region.Value.LowerBound} .. {region.Value.UpperBound}]";
       }
-      if(Weight != 1.0) {
+      if (Weight != 1.0) {
         expression += $" weight: {weight}";
       }
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/ShapeConstraintsParser.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/ShapeConstraintsParser.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/ShapeConstraintsParser.cs	(revision 17896)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ShapeConstraints.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ShapeConstraints.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ShapeConstraints.cs	(revision 17896)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -33,58 +33,4 @@
   [Item("ShapeConstraints", "Represents shape constraints associated with a regression problem data e.g. monotonicity constraints.")]
   public class ShapeConstraints : CheckedItemList<ShapeConstraint> {
-    // private static readonly string exampleInput = "# Example for a target variable constraint:" + Environment.NewLine +
-    //                                               "f in [0 .. 100]" + Environment.NewLine + Environment.NewLine +
-    //                                               "# Example for constraints on model parameters: " + Environment.NewLine +
-    //                                               "df/d'x' in [0 .. 10]" + Environment.NewLine +
-    //                                               "∂²f/∂'x'² in [-1 .. inf.]";
-    // 
-    // [Storable] 
-    // private string input;
-
-    // public string Input {
-    //   get => input;
-    //   set {
-    //     if (input == value) return;
-    //     input = value;
-    //     OnChanged();
-    //   }
-    // }
-
-    // [Storable] 
-    // private string infoText;
-
-    // public string InfoText {
-    //   get => infoText;
-    //   set {
-    //     if (infoText == value) return;
-    //     infoText = value;
-    //     OnChanged();
-    //   }
-    // }
-    // 
-    // [Storable] 
-    // private Color infoColor;
-    // 
-    // public Color InfoColor {
-    //   get => infoColor;
-    //   set {
-    //     if (infoColor == value) return;
-    //     infoColor = value;
-    //     OnChanged();
-    //   }
-    // }
-
-    // [Storable] 
-    // private IEnumerable<IntervalConstraint> constraints;
-
-    // public IEnumerable<IntervalConstraint> Constraints {
-    //   get => constraints;
-    //   set {
-    //     if (constraints == value) return;
-    //     constraints = value.ToList();
-    //     OnChanged();
-    //   }
-    // }
-
     public IEnumerable<ShapeConstraint> EnabledConstraints => base.CheckedItems.Select(checkedItem => checkedItem.Value);
 
@@ -115,7 +61,4 @@
     }
 
-    // [Storable] 
-    // public IRegressionProblemData ProblemData { get; private set; }
-
     [StorableConstructor]
     protected ShapeConstraints(StorableConstructorFlag _) : base(_) { }
@@ -123,9 +66,4 @@
     protected ShapeConstraints(ShapeConstraints original, Cloner cloner)
       : base(original, cloner) {
-      // Input = original.Input;
-      // InfoText = original.InfoText;
-      // infoColor = original.InfoColor;
-      // constraints = original.Constraints.Select(cloner.Clone).ToList();
-      // ProblemData = cloner.Clone(original.ProblemData);
     }
 
@@ -134,19 +72,6 @@
     }
 
-    public ShapeConstraints() {
-      // Input = exampleInput;
-      // InfoText = "";
-      // InfoColor = Color.DarkOrange;
-      // constraints = new List<IntervalConstraint>();
-      // ProblemData = null;
+    public ShapeConstraints() : base() {
     }
-
-    // public ShapeConstraints(IRegressionProblemData problemData) {
-    //   Input = exampleInput;
-    //   InfoText = infoText;
-    //   InfoColor = InfoColor;
-    //   constraints = new List<IntervalConstraint>();
-    //   ProblemData = problemData;
-    // }
 
     public event EventHandler Changed;
Index: /branches/3073_IA_constraint_splitting_reintegration/Tests/ShapeConstraintsParserTest.cs
===================================================================
--- /branches/3073_IA_constraint_splitting_reintegration/Tests/ShapeConstraintsParserTest.cs	(revision 17895)
+++ /branches/3073_IA_constraint_splitting_reintegration/Tests/ShapeConstraintsParserTest.cs	(revision 17896)
@@ -1,4 +1,26 @@
-﻿using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
+﻿#region License Information
+
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#endregion
+
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 using HeuristicLab.Problems.DataAnalysis;
 using System.Globalization;
