Index: trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- trunk/sources/HeuristicLab 3.3.sln	(revision 2523)
+++ trunk/sources/HeuristicLab 3.3.sln	(revision 2524)
@@ -17,5 +17,4 @@
 		{E226881D-315F-423D-B419-A766FE0D8685} = {E226881D-315F-423D-B419-A766FE0D8685}
 		{C36BD924-A541-4A00-AFA8-41701378DDC5} = {C36BD924-A541-4A00-AFA8-41701378DDC5}
-		{19C1E42A-4B48-4EFD-B697-899016F1C198} = {19C1E42A-4B48-4EFD-B697-899016F1C198}
 		{6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6} = {6A5F8C2D-B0C3-4B36-BC20-9B1A91EE6DB6}
 		{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1} = {0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}
@@ -58,6 +57,4 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Data-3.3", "HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj", "{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Constraints-3.3", "HeuristicLab.Constraints\3.3\HeuristicLab.Constraints-3.3.csproj", "{19C1E42A-4B48-4EFD-B697-899016F1C198}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Operators-3.3", "HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj", "{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}"
@@ -213,16 +210,4 @@
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x86.ActiveCfg = Release|x86
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}.Release|x86.Build.0 = Release|x86
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Debug|x64.ActiveCfg = Debug|x64
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Debug|x64.Build.0 = Debug|x64
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Debug|x86.ActiveCfg = Debug|x86
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Debug|x86.Build.0 = Debug|x86
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Release|Any CPU.Build.0 = Release|Any CPU
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Release|x64.ActiveCfg = Release|x64
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Release|x64.Build.0 = Release|x64
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Release|x86.ActiveCfg = Release|x86
-		{19C1E42A-4B48-4EFD-B697-899016F1C198}.Release|x86.Build.0 = Release|x86
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
Index: trunk/sources/HeuristicLab 3.3/CopyAssemblies.cmd
===================================================================
--- trunk/sources/HeuristicLab 3.3/CopyAssemblies.cmd	(revision 2523)
+++ trunk/sources/HeuristicLab 3.3/CopyAssemblies.cmd	(revision 2524)
@@ -14,5 +14,4 @@
 copy "%SolutionDir%\HeuristicLab.Core\3.3\%Outdir%\HeuristicLab.Core-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Core.Views\3.3\%Outdir%\HeuristicLab.Core.Views-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Constraints\3.3\%Outdir%\HeuristicLab.Constraints-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Data\3.3\%Outdir%\HeuristicLab.Data-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Evolutionary\3.3\%Outdir%\HeuristicLab.Evolutionary-3.3.dll" .\plugins
@@ -25,5 +24,4 @@
 copy "%SolutionDir%\HeuristicLab.Operators\3.3\%Outdir%\HeuristicLab.Operators-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Operators.Programmable\3.3\%Outdir%\HeuristicLab.Operators.Programmable-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.OptimizationFrontend\3.3\%Outdir%\HeuristicLab.OptimizationFrontend-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Optimizer\3.3\%Outdir%\HeuristicLab.Optimizer-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Permutation\3.3\%Outdir%\HeuristicLab.Permutation-3.3.dll" .\plugins
Index: trunk/sources/HeuristicLab.Core.Views/3.3/Auxiliary.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/Auxiliary.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/Auxiliary.cs	(revision 2524)
@@ -30,21 +30,4 @@
   /// </summary>
   public static class Auxiliary {
-    #region Cloning
-    /// <summary>
-    /// Clones the given <paramref name="obj"/> (deep clone).
-    /// </summary>
-    /// <remarks>Checks before clone if object has not already been cloned.</remarks>
-    /// <param name="obj">The object to clone.</param>
-    /// <param name="clonedObjects">A dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
-    /// <returns>The cloned object.</returns>
-    public static object Clone(IStorable obj, IDictionary<Guid, object> clonedObjects) {
-      object clone;
-      if (clonedObjects.TryGetValue(obj.Guid, out clone))
-        return clone;
-      else
-        return obj.Clone(clonedObjects);
-    }
-    #endregion
-
     #region Error Messages
     /// <summary>
@@ -84,47 +67,4 @@
     }
     #endregion
-
-    #region Constraint Violation Messages
-    /// <summary>
-    /// Shows a warning message box with an OK-Button, indicating that the given constraints were violated and so 
-    /// the operation could not be completed. 
-    /// </summary>
-    /// <param name="violatedConstraints">The constraints that could not be fulfilled.</param>
-    public static void ShowConstraintViolationMessageBox(ICollection<IConstraint> violatedConstraints) {
-      string message = BuildConstraintViolationMessage(violatedConstraints);
-      MessageBox.Show("The following constraints are violated. The operation could not be completed.\n\n" + message,
-                      "Constraint Violation",
-                      MessageBoxButtons.OK,
-                      MessageBoxIcon.Warning);
-    }
-    /// <summary>
-    /// Shows a question message box with a yes-no option, where to choose whether to ignore 
-    /// the given violated constraints and to complete the operation or not.
-    /// </summary>
-    /// <param name="violatedConstraints">The constraints that could not be fulfilled.</param>
-    /// <returns>The result of the choice ("Yes" = 6, "No" = 7).</returns>
-    public static DialogResult ShowIgnoreConstraintViolationMessageBox(ICollection<IConstraint> violatedConstraints) {
-      string message = BuildConstraintViolationMessage(violatedConstraints);
-      return MessageBox.Show("The following constraints are violated. Do you want to complete the operation anyhow?\n\n" + message,
-                             "Constraint Violation",
-                             MessageBoxButtons.YesNo,
-                             MessageBoxIcon.Question);
-    }
-    /// <summary>
-    /// Builds a message out of a given collection of violated constraints, 
-    /// including the constraints type and description.
-    /// </summary>
-    /// <param name="violatedConstraints">The constraints that could not be fulfilled.</param>
-    /// <returns>The message to display.</returns>
-    private static string BuildConstraintViolationMessage(ICollection<IConstraint> violatedConstraints) {
-      StringBuilder sb = new StringBuilder();
-      foreach (IConstraint constraint in violatedConstraints) {
-        sb.AppendLine(constraint.GetType().Name);
-        sb.AppendLine(constraint.Description);
-        sb.AppendLine();
-      }
-      return sb.ToString();
-    }
-    #endregion
   }
 }
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ConstrainedItemBaseView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ConstrainedItemBaseView.Designer.cs	(revision 2523)
+++ 	(revision )
@@ -1,174 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Windows.Forms;
-
-namespace HeuristicLab.Core.Views {
-  partial class ConstrainedItemBaseView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (chooseItemDialog != null) chooseItemDialog.Dispose();
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.removeConstraintButton = new System.Windows.Forms.Button();
-      this.addConstraintButton = new System.Windows.Forms.Button();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.constraintsGroupBox = new System.Windows.Forms.GroupBox();
-      this.constraintsListView = new System.Windows.Forms.ListView();
-      this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
-      this.constraintDetailsGroupBox = new System.Windows.Forms.GroupBox();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.constraintsGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // removeConstraintButton
-      // 
-      this.removeConstraintButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.removeConstraintButton.Enabled = false;
-      this.removeConstraintButton.Location = new System.Drawing.Point(81, 310);
-      this.removeConstraintButton.Name = "removeConstraintButton";
-      this.removeConstraintButton.Size = new System.Drawing.Size(75, 23);
-      this.removeConstraintButton.TabIndex = 2;
-      this.removeConstraintButton.Text = "&Remove";
-      this.removeConstraintButton.UseVisualStyleBackColor = true;
-      this.removeConstraintButton.Click += new System.EventHandler(this.removeConstraintButton_Click);
-      // 
-      // addConstraintButton
-      // 
-      this.addConstraintButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.addConstraintButton.Location = new System.Drawing.Point(0, 310);
-      this.addConstraintButton.Name = "addConstraintButton";
-      this.addConstraintButton.Size = new System.Drawing.Size(75, 23);
-      this.addConstraintButton.TabIndex = 1;
-      this.addConstraintButton.Text = "&Add...";
-      this.addConstraintButton.UseVisualStyleBackColor = true;
-      this.addConstraintButton.Click += new System.EventHandler(this.addConstraintButton_Click);
-      // 
-      // splitContainer
-      // 
-      this.splitContainer.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.splitContainer.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer.Name = "splitContainer";
-      // 
-      // splitContainer.Panel1
-      // 
-      this.splitContainer.Panel1.Controls.Add(this.constraintsGroupBox);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.constraintDetailsGroupBox);
-      this.splitContainer.Size = new System.Drawing.Size(423, 304);
-      this.splitContainer.SplitterDistance = 149;
-      this.splitContainer.TabIndex = 0;
-      // 
-      // constraintsGroupBox
-      // 
-      this.constraintsGroupBox.Controls.Add(this.constraintsListView);
-      this.constraintsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constraintsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.constraintsGroupBox.Name = "constraintsGroupBox";
-      this.constraintsGroupBox.Size = new System.Drawing.Size(149, 304);
-      this.constraintsGroupBox.TabIndex = 0;
-      this.constraintsGroupBox.TabStop = false;
-      this.constraintsGroupBox.Text = "&Constraints";
-      // 
-      // constraintsListView
-      // 
-      this.constraintsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.columnHeader3});
-      this.constraintsListView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constraintsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
-      this.constraintsListView.HideSelection = false;
-      this.constraintsListView.Location = new System.Drawing.Point(3, 16);
-      this.constraintsListView.Name = "constraintsListView";
-      this.constraintsListView.ShowItemToolTips = true;
-      this.constraintsListView.Size = new System.Drawing.Size(143, 285);
-      this.constraintsListView.TabIndex = 0;
-      this.constraintsListView.UseCompatibleStateImageBehavior = false;
-      this.constraintsListView.View = System.Windows.Forms.View.Details;
-      this.constraintsListView.SelectedIndexChanged += new System.EventHandler(this.constraintsListView_SelectedIndexChanged);
-      this.constraintsListView.SizeChanged += new System.EventHandler(this.constraintsListView_SizeChanged);
-      this.constraintsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.constraintsListView_KeyDown);
-      // 
-      // constraintDetailsGroupBox
-      // 
-      this.constraintDetailsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constraintDetailsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.constraintDetailsGroupBox.Name = "constraintDetailsGroupBox";
-      this.constraintDetailsGroupBox.Size = new System.Drawing.Size(270, 304);
-      this.constraintDetailsGroupBox.TabIndex = 0;
-      this.constraintDetailsGroupBox.TabStop = false;
-      this.constraintDetailsGroupBox.Text = "&Details";
-      // 
-      // ConstrainedItemBaseView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.addConstraintButton);
-      this.Controls.Add(this.removeConstraintButton);
-      this.Controls.Add(this.splitContainer);
-      this.Name = "ConstrainedItemBaseView";
-      this.Size = new System.Drawing.Size(423, 333);
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.ResumeLayout(false);
-      this.constraintsGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private ColumnHeader columnHeader3;
-    protected Button removeConstraintButton;
-    protected Button addConstraintButton;
-    protected SplitContainer splitContainer;
-    protected GroupBox constraintsGroupBox;
-    protected ListView constraintsListView;
-    protected GroupBox constraintDetailsGroupBox;
-
-
-  }
-}
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ConstrainedItemBaseView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ConstrainedItemBaseView.cs	(revision 2523)
+++ 	(revision )
@@ -1,185 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// The visual representation of an <see cref="IConstrainedItem"/>.
-  /// </summary>
-  [Content(typeof(ConstrainedItemBase), true)]
-  public partial class ConstrainedItemBaseView : ViewBase {
-    private ChooseItemDialog chooseItemDialog;
-
-    /// <summary>
-    /// Gets or sets the current item to represent visually.
-    /// </summary>
-    public IConstrainedItem ConstrainedItem {
-      get { return (IConstrainedItem)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedItemBaseView"/> 
-    /// with the caption "Constrained Item".
-    /// </summary>
-    public ConstrainedItemBaseView() {
-      InitializeComponent();
-      constraintsListView.Columns[0].Width = Math.Max(0, constraintsListView.Width - 25);
-      Caption = "Constrained Item";
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedItemBaseView"/> with the given 
-    /// <paramref name="constraintItem"/>.
-    /// </summary>
-    /// <param name="constraintItem">The item to represent visually.</param>
-    public ConstrainedItemBaseView(IConstrainedItem constraintItem)
-      : this() {
-      ConstrainedItem = constraintItem;
-    }
-
-    /// <summary>
-    /// Removes the event handlers from the underlying <see cref="IConstrainedItem"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void RemoveItemEvents() {
-      ConstrainedItem.ConstraintAdded -= new EventHandler<EventArgs<IConstraint>>(ConstrainedItemBase_ConstraintAdded);
-      ConstrainedItem.ConstraintRemoved -= new EventHandler<EventArgs<IConstraint>>(ConstrainedItemBase_ConstraintRemoved);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds event handlers to the underlying <see cref="IConstrainedItem"/>. 
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      ConstrainedItem.ConstraintAdded += new EventHandler<EventArgs<IConstraint>>(ConstrainedItemBase_ConstraintAdded);
-      ConstrainedItem.ConstraintRemoved += new EventHandler<EventArgs<IConstraint>>(ConstrainedItemBase_ConstraintRemoved);
-    }
-
-    /// <summary>
-    /// Updates all controls with the latest data of the model.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      constraintDetailsGroupBox.Controls.Clear();
-      if (ConstrainedItem == null) {
-        Caption = "Constrained Item";
-        constraintsListView.Enabled = false;
-        constraintDetailsGroupBox.Enabled = false;
-        removeConstraintButton.Enabled = false;
-      } else {
-        Caption = "Constrained Item (" + ConstrainedItem.GetType().Name + ")";
-        constraintsListView.Enabled = true;
-        constraintsListView.Items.Clear();
-        foreach (IConstraint constraint in ConstrainedItem.Constraints) {
-          ListViewItem item = new ListViewItem();
-          item.Text = constraint.GetType().Name;
-          item.Tag = constraint;
-          constraintsListView.Items.Add(item);
-        }
-        if (constraintsListView.Items.Count > 0)
-          constraintsListView.SelectedIndices.Add(0);
-      }
-    }
-
-    private void constraintsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      if (constraintDetailsGroupBox.Controls.Count > 0)
-        constraintDetailsGroupBox.Controls[0].Dispose();
-      constraintDetailsGroupBox.Controls.Clear();
-      constraintDetailsGroupBox.Enabled = false;
-      removeConstraintButton.Enabled = false;
-      if (constraintsListView.SelectedItems.Count > 0) {
-        removeConstraintButton.Enabled = true;
-      }
-      if (constraintsListView.SelectedItems.Count == 1) {
-        IConstraint constraint = (IConstraint)constraintsListView.SelectedItems[0].Tag;
-        Control view = (Control)MainFormManager.CreateDefaultView(constraint);
-        if (view != null) {
-          constraintDetailsGroupBox.Controls.Add(view);
-          view.Dock = DockStyle.Fill;
-          constraintDetailsGroupBox.Enabled = true;
-        }
-      }
-    }
-
-    #region Size Changed Events
-    private void constraintsListView_SizeChanged(object sender, EventArgs e) {
-      if (constraintsListView.Columns.Count > 0)
-        constraintsListView.Columns[0].Width = Math.Max(0, constraintsListView.Width - 25);
-    }
-    #endregion
-
-    #region Key Events
-    private void constraintsListView_KeyDown(object sender, KeyEventArgs e) {
-      if (e.KeyCode == Keys.Delete) {
-        if (constraintsListView.SelectedItems.Count > 0) {
-          foreach (ListViewItem item in constraintsListView.SelectedItems)
-            ConstrainedItem.RemoveConstraint((IConstraint)item.Tag);
-        }
-      }
-    }
-    #endregion
-
-    #region Button Events
-    private void addConstraintButton_Click(object sender, EventArgs e) {
-      if (chooseItemDialog == null) {
-        chooseItemDialog = new ChooseItemDialog(typeof(IConstraint));
-        chooseItemDialog.Caption = "Add Constraint";
-      }
-      if (chooseItemDialog.ShowDialog(this) == DialogResult.OK)
-        ConstrainedItem.AddConstraint((IConstraint)chooseItemDialog.Item);
-    }
-    private void removeConstraintButton_Click(object sender, EventArgs e) {
-      if (constraintsListView.SelectedItems.Count > 0) {
-        foreach (ListViewItem item in constraintsListView.SelectedItems)
-          ConstrainedItem.RemoveConstraint((IConstraint)item.Tag);
-      }
-    }
-    #endregion
-
-    #region ConstrainedItemBase Events
-    private void ConstrainedItemBase_ConstraintAdded(object sender, EventArgs<IConstraint> e) {
-      ListViewItem item = new ListViewItem();
-      item.Text = e.Value.GetType().Name;
-      item.Tag = e.Value;
-      constraintsListView.Items.Add(item);
-    }
-    private void ConstrainedItemBase_ConstraintRemoved(object sender, EventArgs<IConstraint> e) {
-      ListViewItem itemToDelete = null;
-      foreach (ListViewItem item in constraintsListView.Items) {
-        if (item.Tag == e.Value)
-          itemToDelete = item;
-      }
-      constraintsListView.Items.Remove(itemToDelete);
-    }
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ConstrainedItemBaseView.resx
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ConstrainedItemBaseView.resx	(revision 2523)
+++ 	(revision )
@@ -1,120 +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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2523)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2524)
@@ -70,10 +70,4 @@
       <DependentUpon>ChooseTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="ConstrainedItemBaseView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedItemBaseView.Designer.cs">
-      <DependentUpon>ConstrainedItemBaseView.cs</DependentUpon>
-    </Compile>
     <Compile Include="EditorBase.cs">
       <SubType>UserControl</SubType>
@@ -210,7 +204,4 @@
     <EmbeddedResource Include="ChooseTypeDialog.resx">
       <DependentUpon>ChooseTypeDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedItemBaseView.resx">
-      <DependentUpon>ConstrainedItemBaseView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="EditorBase.resx">
Index: trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.Designer.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.Designer.cs	(revision 2524)
@@ -53,6 +53,4 @@
       this.variablesTabPage = new System.Windows.Forms.TabPage();
       this.operatorBaseVariablesView = new HeuristicLab.Core.Views.OperatorBaseVariablesView();
-      this.constraintsTabPage = new System.Windows.Forms.TabPage();
-      this.constrainedItemBaseView = new HeuristicLab.Core.Views.ConstrainedItemBaseView();
       this.descriptionTabPage = new System.Windows.Forms.TabPage();
       this.operatorBaseDescriptionView = new HeuristicLab.Core.Views.OperatorBaseDescriptionView();
@@ -60,5 +58,4 @@
       this.variableInfosTabPage.SuspendLayout();
       this.variablesTabPage.SuspendLayout();
-      this.constraintsTabPage.SuspendLayout();
       this.descriptionTabPage.SuspendLayout();
       this.SuspendLayout();
@@ -68,5 +65,4 @@
       this.tabControl.Controls.Add(this.variableInfosTabPage);
       this.tabControl.Controls.Add(this.variablesTabPage);
-      this.tabControl.Controls.Add(this.constraintsTabPage);
       this.tabControl.Controls.Add(this.descriptionTabPage);
       this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -119,25 +115,4 @@
       this.operatorBaseVariablesView.TabIndex = 0;
       // 
-      // constraintsTabPage
-      // 
-      this.constraintsTabPage.Controls.Add(this.constrainedItemBaseView);
-      this.constraintsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.constraintsTabPage.Name = "constraintsTabPage";
-      this.constraintsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.constraintsTabPage.Size = new System.Drawing.Size(415, 307);
-      this.constraintsTabPage.TabIndex = 2;
-      this.constraintsTabPage.Text = "Constraints";
-      this.constraintsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // constrainedItemBaseView
-      // 
-      this.constrainedItemBaseView.Caption = "Constrained Data";
-      this.constrainedItemBaseView.ConstrainedItem = null;
-      this.constrainedItemBaseView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constrainedItemBaseView.Location = new System.Drawing.Point(3, 3);
-      this.constrainedItemBaseView.Name = "constrainedItemBaseView";
-      this.constrainedItemBaseView.Size = new System.Drawing.Size(409, 301);
-      this.constrainedItemBaseView.TabIndex = 0;
-      // 
       // descriptionTabPage
       // 
@@ -172,5 +147,4 @@
       this.variableInfosTabPage.ResumeLayout(false);
       this.variablesTabPage.ResumeLayout(false);
-      this.constraintsTabPage.ResumeLayout(false);
       this.descriptionTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
@@ -183,6 +157,4 @@
     protected TabPage variableInfosTabPage;
     protected TabPage variablesTabPage;
-    private TabPage constraintsTabPage;
-    protected ConstrainedItemBaseView constrainedItemBaseView;
     protected OperatorBaseVariableInfosView operatorBaseVariableInfosView;
     protected OperatorBaseVariablesView operatorBaseVariablesView;
Index: trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.cs	(revision 2524)
@@ -70,5 +70,4 @@
       operatorBaseVariableInfosView.Operator = null;
       operatorBaseVariablesView.Operator = null;
-      constrainedItemBaseView.ConstrainedItem = null;
       operatorBaseDescriptionView.Operator = null;
       base.RemoveItemEvents();
@@ -81,5 +80,4 @@
       operatorBaseVariableInfosView.Operator = Operator;
       operatorBaseVariablesView.Operator = Operator;
-      constrainedItemBaseView.ConstrainedItem = Operator;
       operatorBaseDescriptionView.Operator = Operator;
     }
Index: trunk/sources/HeuristicLab.Core.Views/3.3/OperatorGraphView.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/OperatorGraphView.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/OperatorGraphView.cs	(revision 2524)
@@ -353,37 +353,13 @@
               IOperator newParent = (IOperator)node.Parent.Tag;
               int newIndex = node.Index;
-              ICollection<IConstraint> violatedConstraints;
-              ICollection<IConstraint> violatedConstraints2;
-              oldParent.TryRemoveSubOperator(oldIndex, out violatedConstraints);
-              newParent.TryAddSubOperator(op, newIndex, out violatedConstraints2);
-              if ((violatedConstraints.Count == 0) && (violatedConstraints2.Count == 0)) {
-                graphTreeView.SelectedNode = parentNode.Nodes[newIndex];
-              } else {
-                List<IConstraint> allViolatedConstraints = new List<IConstraint>(violatedConstraints);
-                allViolatedConstraints.AddRange(violatedConstraints2);
-                if (Auxiliary.ShowIgnoreConstraintViolationMessageBox(allViolatedConstraints) == DialogResult.Yes) {
-                  if (violatedConstraints.Count > 0)
-                    oldParent.RemoveSubOperator(oldIndex);
-                  if (violatedConstraints2.Count > 0)
-                    newParent.AddSubOperator(op, newIndex);
-                  graphTreeView.SelectedNode = parentNode.Nodes[newIndex];
-                } else {
-                  if (violatedConstraints.Count == 0)
-                    oldParent.AddSubOperator(op, oldIndex);
-                  if (violatedConstraints2.Count == 0)
-                    newParent.RemoveSubOperator(newIndex);
-                }
-              }
+              oldParent.RemoveSubOperator(oldIndex);
+              newParent.AddSubOperator(op, newIndex);
+              graphTreeView.SelectedNode = parentNode.Nodes[newIndex];
             }
           } else {
             if (node != null) {
               IOperator parent = (IOperator)node.Tag;
-              ICollection<IConstraint> violatedConstraints;
-              if (parent.TryAddSubOperator(op, out violatedConstraints)) {
-                graphTreeView.SelectedNode = node.Nodes[node.Nodes.Count - 1];
-              } else if (Auxiliary.ShowIgnoreConstraintViolationMessageBox(violatedConstraints) == DialogResult.Yes) {
-                parent.AddSubOperator(op);
-                graphTreeView.SelectedNode = node.Nodes[node.Nodes.Count - 1];
-              }
+              parent.AddSubOperator(op);
+              graphTreeView.SelectedNode = node.Nodes[node.Nodes.Count - 1];
             }
           }
Index: trunk/sources/HeuristicLab.Core/3.3/ConstrainedItemBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/ConstrainedItemBase.cs	(revision 2523)
+++ 	(revision )
@@ -1,142 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Base class for all items that are subjects to restrictions.
-  /// </summary>
-  public abstract class ConstrainedItemBase : ItemBase, IConstrainedItem {
-
-    [Storable]
-    private List<IConstraint> myConstraints;
-    /// <summary>
-    /// Gets all current constraints.
-    /// <note type="caution"> The constraints are returned read-only.</note>
-    /// </summary>
-    public virtual ICollection<IConstraint> Constraints {
-      get { return myConstraints.AsReadOnly(); }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedItemBase"/>.
-    /// </summary>
-    protected ConstrainedItemBase() {
-      myConstraints = new List<IConstraint>();
-    }
-
-    /// <summary>
-    /// Clones the current instance (deep clone).
-    /// </summary>
-    /// <remarks>Calls <see cref="StorableBase.Clone
-    /// (System.Collections.Generic.IDictionary&lt;System.Guid, object&gt;)"/> 
-    /// of base class <see cref="ItemBase"/>.<br/>
-    /// Deep clone through <see cref="Auxiliary.Clone"/> method of helper class 
-    /// <see cref="Auxiliary"/>.</remarks>
-    /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
-    /// <returns>The cloned object as <see cref="ConstrainedItemBase"/>.</returns>
-    public override object Clone(IDictionary<Guid, object> clonedObjects) {
-      ConstrainedItemBase clone = (ConstrainedItemBase)base.Clone(clonedObjects);
-      clone.myConstraints.Clear();
-      foreach (IConstraint constraint in Constraints)
-        clone.AddConstraint((IConstraint)Auxiliary.Clone(constraint, clonedObjects));
-      return clone;
-    }
-
-    /// <summary>
-    /// Adds the given <paramref name="constraint"/> to the current list.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnConstraintAdded"/>.</remarks>
-    /// <param name="constraint">The constraint to add.</param>
-    public virtual void AddConstraint(IConstraint constraint) {
-      myConstraints.Add(constraint);
-      OnConstraintAdded(constraint);
-    }
-    /// <summary>
-    /// Removes the given <paramref name="constraint"/> from the current list.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnConstraintRemoved"/> if the constraint can be successfully removed.</remarks>
-    /// <param name="constraint">The constraint to remove.</param>
-    public virtual void RemoveConstraint(IConstraint constraint) {
-      if (myConstraints.Remove(constraint))
-        OnConstraintRemoved(constraint);
-    }
-
-    /// <summary>
-    /// Checks all constraints of the current instance.
-    /// </summary>
-    /// <returns><c>true</c> if all constraints could be fulfilled, <c>false</c> otherwise.</returns>
-    public bool IsValid() {
-      bool result = true;
-      foreach (IConstraint constraint in Constraints)
-        result = result && constraint.Check(this);
-      return result;
-    }
-    /// <summary>
-    /// Checks all constraints of the current instance.
-    /// </summary>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if all constraints could be fulfilled, <c>false</c> otherwise.</returns>
-    public bool IsValid(out ICollection<IConstraint> violatedConstraints) {
-      bool result = true;
-      violatedConstraints = new List<IConstraint>();
-      foreach (IConstraint constraint in Constraints) {
-        if (!constraint.Check(this)) {
-          result = false;
-          violatedConstraints.Add(constraint);
-        }
-      }
-      return result;
-    }
-
-    /// <summary>
-    /// Occurs when a constraint is added.
-    /// </summary>
-    public event EventHandler<EventArgs<IConstraint>> ConstraintAdded;
-    /// <summary>
-    /// Fires a new <c>ConstraintAdded</c> event.
-    /// </summary>
-    /// <param name="constraint">The constraint that was added.</param>
-    protected virtual void OnConstraintAdded(IConstraint constraint) {
-      if (ConstraintAdded != null)
-        ConstraintAdded(this, new EventArgs<IConstraint>(constraint));
-    }
-    /// <summary>
-    /// Occurs when a constraint is removed.
-    /// </summary>
-    public event EventHandler<EventArgs<IConstraint>> ConstraintRemoved;
-    /// <summary>
-    /// Fires a new <c>ConstraintRemoved</c> event.
-    /// </summary>
-    /// <param name="constraint">The constraint that was removed.</param>
-    protected virtual void OnConstraintRemoved(IConstraint constraint) {
-      if (ConstraintRemoved != null)
-        ConstraintRemoved(this, new EventArgs<IConstraint>(constraint));
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2523)
+++ trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2524)
@@ -99,5 +99,4 @@
   <ItemGroup>
     <Compile Include="Auxiliary.cs" />
-    <Compile Include="ConstrainedItemBase.cs" />
     <Compile Include="AtomicOperation.cs" />
     <Compile Include="CompositeOperation.cs" />
@@ -106,6 +105,4 @@
     <Compile Include="Interfaces\IOperatorLibrary.cs" />
     <Compile Include="Interfaces\IVisualizationItem.cs" />
-    <Compile Include="Interfaces\IConstrainedItem.cs" />
-    <Compile Include="Interfaces\IConstraint.cs" />
     <Compile Include="Interfaces\IItem.cs" />
     <Compile Include="ItemBase.cs" />
Index: trunk/sources/HeuristicLab.Core/3.3/Interfaces/IConstrainedItem.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Interfaces/IConstrainedItem.cs	(revision 2523)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Interface to represent items that are subjects to restrictions. 
-  /// </summary>
-  public interface IConstrainedItem : IItem {
-    /// <summary>
-    /// All constraints of the current instance. 
-    /// </summary>
-    ICollection<IConstraint> Constraints { get; }
-
-    /// <summary>
-    /// Adds a constraint to the current instance.
-    /// </summary>
-    /// <param name="constraint">The constraint to add.</param>
-    void AddConstraint(IConstraint constraint);
-    /// <summary>
-    /// Removes a constraint from the current instance.
-    /// </summary>
-    /// <param name="constraint">The constraint to remove.</param>
-    void RemoveConstraint(IConstraint constraint);
-
-    /// <summary>
-    /// Checks whether the current instance fullfills all constraints.
-    /// </summary>
-    /// <returns><c>true</c> if all constraints are fullfilled, <c>false</c> otherwise.</returns>
-    bool IsValid();
-    /// <summary>
-    /// Checks whether the current instance fullfills all constraints.
-    /// </summary>
-    /// <param name="violatedConstraints">Output parameter, all constraints that could not be fullfilled.</param>
-    /// <returns><c>true</c> if all constraints are fullfilled, <c>false</c> otherwise.</returns>
-    bool IsValid(out ICollection<IConstraint> violatedConstraints);
-
-    /// <summary>
-    /// An <see cref="EventHandler"/> for events when a new constraint is added.
-    /// </summary>
-    event EventHandler<EventArgs<IConstraint>> ConstraintAdded;
-    /// <summary>
-    /// An <see cref="EventHandler"/> for events when a constraint is deleted.
-    /// </summary>
-    event EventHandler<EventArgs<IConstraint>> ConstraintRemoved;
-  }
-}
Index: trunk/sources/HeuristicLab.Core/3.3/Interfaces/IConstraint.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Interfaces/IConstraint.cs	(revision 2523)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Interface to represent restrictions.
-  /// </summary>
-  public interface IConstraint : IItem {
-    /// <summary>
-    /// Gets the description of the current instance.
-    /// </summary>
-    string Description { get; }
-
-    /// <summary>
-    /// Checks whether the given <paramref name="data"/> fulfills the current constraint.
-    /// </summary>
-    /// <param name="data">The item to check.</param>
-    /// <returns><c>true</c> if the current instance could be fulfilled, <c>false</c> otherwise.</returns>
-    bool Check(IItem data);
-  }
-}
Index: trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs	(revision 2524)
@@ -30,5 +30,5 @@
   /// a basic instruction of an algorithm.
   /// </summary>
-  public interface IOperator : IConstrainedItem {
+  public interface IOperator : IItem {
     /// <summary>
     /// Gets or sets the name of the current instance.
@@ -68,20 +68,4 @@
     void AddSubOperator(IOperator op);
     /// <summary>
-    /// Adds the given sub operator to the current instance if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op);
-    /// <summary>
-    /// Adds the given sub operator to the current instance if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
     /// Adds the given sub operator at a the specified <paramref name="index"/>.
     /// </summary>
@@ -90,45 +74,8 @@
     void AddSubOperator(IOperator op, int index);
     /// <summary>
-    /// Adds the given operator at the specified <paramref name="index"/> to the current instance 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="index">The position where to add the operator.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op, int index);
-    /// <summary>
-    /// Adds the given operator at the specified <paramref name="index"/> to the current instance 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="index">The position where to add the operator.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op, int index, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
     /// Removes a sub operator at the specified <paramref name="index"/>.
     /// </summary>
     /// <param name="index">The position where to delete the operator.</param>
     void RemoveSubOperator(int index);
-    /// <summary>
-    /// Removes a sub operator at the specified <paramref name="index"/> if all constraint can be fulfilled.
-    /// </summary>
-    /// <param name="index">The position where to delete the operator.</param>
-    /// <returns><c>true</c> if the operator could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveSubOperator(int index);
-    /// <summary>
-    /// Deletes the operator at the specified <paramref name="index"/>  
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="index">The position where to delete the operator.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the operator could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveSubOperator(int index, out ICollection<IConstraint> violatedConstraints);
 
     /// <summary>
@@ -144,42 +91,8 @@
     void AddVariableInfo(IVariableInfo variableInfo);
     /// <summary>
-    /// Adds the specified variable info to the current instance, if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="variableInfo">The variable info to add.</param>
-    /// <returns><c>true</c> if the variable info could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariableInfo(IVariableInfo variableInfo);
-    /// <summary>
-    /// Adds the specified variable info to the current instance, if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="variableInfo">The variable info to add.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the variable info could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariableInfo(IVariableInfo variableInfo, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
     /// Removes the variable info with the given formal name.
     /// </summary>
     /// <param name="formalName">The formal name of the variable info to remove.</param>
     void RemoveVariableInfo(string formalName);
-    /// <summary>
-    /// Deletes the variable info with the given formal name, 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="formalName">The formal name of the variable info to remove.</param>
-    /// <returns><c>true</c> if the variable info could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariableInfo(string formalName);
-    /// <summary>
-    /// Deletes the variable info with the given formal name, 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="formalName">The formal name of the variable info to remove.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the variable info could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariableInfo(string formalName, out ICollection<IConstraint> violatedConstraints);
 
     /// <summary>
@@ -195,45 +108,9 @@
     void AddVariable(IVariable variable);
     /// <summary>
-    /// Adds the specified <paramref name="variable"/> to the current instance if all constraints can
-    /// be fulfilled.
-    /// </summary>
-    /// <param name="variable">The variable to add.</param>
-    /// <returns><c>true</c> if the variable could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariable(IVariable variable);
-    /// <summary>
-    /// Adds the specified <paramref name="variable"/> to the current instance if all constraints can
-    /// be fulfilled.
-    /// </summary>
-    /// <param name="variable">The variable to add.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could 
-    /// not be fulfillled.</param>
-    /// <returns><c>true</c> if the variable could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariable(IVariable variable, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
     /// Deletes the variable with the specified <paramref name="name"/>.
     /// </summary>
     /// <param name="name">The name of the variable to delete.</param>
     void RemoveVariable(string name);
-    /// <summary>
-    /// Deletes the variable with the specified <paramref name="name"/> if all constraints can be 
-    /// fulfilled.
-    /// </summary>
-    /// <param name="name">The name of the variable to remove.</param>
-    /// <returns><c>true</c> if the variable could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariable(string name);
-    /// <summary>
-    /// Deletes the variable with the specified <paramref name="name"/> if all constraints can be 
-    /// fulfilled.
-    /// </summary>
-    /// <param name="name">The name of the variable to remove.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could 
-    /// not be fulfilled.</param>
-    /// <returns><c>true</c> if the variable could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariable(string name, out ICollection<IConstraint> violatedConstraints);
-    
+
     /// <inheritdoc cref="GetVariableValue(string, HeuristicLab.Core.IScope, bool)"/>
     /// <typeparam name="T">The type of the value that is searched.</typeparam>       
Index: trunk/sources/HeuristicLab.Core/3.3/OperatorBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Core/3.3/OperatorBase.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Core/3.3/OperatorBase.cs	(revision 2524)
@@ -31,5 +31,5 @@
   /// The base class for all operators.
   /// </summary>
-  public abstract class OperatorBase : ConstrainedItemBase, IOperator {
+  public abstract class OperatorBase : ItemBase, IOperator {
 
     [Storable]
@@ -154,31 +154,4 @@
       OnSubOperatorAdded(subOperator, mySubOperators.Count - 1);
     }
-    /// <inheritdoc cref="IOperator.TryAddSubOperator(HeuristicLab.Core.IOperator)"/>
-    /// <param name="subOperator">The sub operator to add.</param>
-    /// <remarks>Calls <see cref="OnSubOperatorAdded"/>.</remarks>
-    public virtual bool TryAddSubOperator(IOperator subOperator) {
-      mySubOperators.Add(subOperator);
-      if (IsValid()) {
-        OnSubOperatorAdded(subOperator, mySubOperators.Count - 1);
-        return true;
-      } else {
-        mySubOperators.RemoveAt(mySubOperators.Count - 1);
-        return false;
-      }
-    }
-    /// <inheritdoc cref="HeuristicLab.Core.IOperator.TryAddSubOperator(HeuristicLab.Core.IOperator, 
-    /// out System.Collections.Generic.ICollection&lt;HeuristicLab.Core.IConstraint&gt;)"/>
-    /// <param name="subOperator">The sub operator to add.</param>
-    /// <remarks>Calls <see cref="OnSubOperatorAdded"/>.</remarks>
-    public virtual bool TryAddSubOperator(IOperator subOperator, out ICollection<IConstraint> violatedConstraints) {
-      mySubOperators.Add(subOperator);
-      if (IsValid(out violatedConstraints)) {
-        OnSubOperatorAdded(subOperator, mySubOperators.Count - 1);
-        return true;
-      } else {
-        mySubOperators.RemoveAt(mySubOperators.Count - 1);
-        return false;
-      }
-    }
     /// <inheritdoc cref="HeuristicLab.Core.IOperator.AddSubOperator(HeuristicLab.Core.IOperator, int)"/>
     /// <param name="subOperator">The sub operator to add.</param>
@@ -188,31 +161,4 @@
       OnSubOperatorAdded(subOperator, index);
     }
-    /// <inheritdoc cref="IOperator.TryAddSubOperator(HeuristicLab.Core.IOperator, int)"/>
-    /// <param name="subOperator">The sub operator to add.</param>
-    /// <remarks>Calls <see cref="OnSubOperatorAdded"/>.</remarks>
-    public virtual bool TryAddSubOperator(IOperator subOperator, int index) {
-      mySubOperators.Insert(index, subOperator);
-      if (IsValid()) {
-        OnSubOperatorAdded(subOperator, index);
-        return true;
-      } else {
-        mySubOperators.RemoveAt(index);
-        return false;
-      }
-    }
-    /// <inheritdoc cref="IOperator.TryAddSubOperator(HeuristicLab.Core.IOperator, int, out
-    /// System.Collections.Generic.ICollection&lt;HeuristicLab.Core.IConstraint&gt;)"/>
-    /// <param name="subOperator">The sub operator to add.</param>
-    /// <remarks>Calls <see cref="OnSubOperatorAdded"/>.</remarks>
-    public virtual bool TryAddSubOperator(IOperator subOperator, int index, out ICollection<IConstraint> violatedConstraints) {
-      mySubOperators.Insert(index, subOperator);
-      if (IsValid(out violatedConstraints)) {
-        OnSubOperatorAdded(subOperator, index);
-        return true;
-      } else {
-        mySubOperators.RemoveAt(index);
-        return false;
-      }
-    }
     /// <inheritdoc/>
     /// <remarks>Calls <see cref="OnSubOperatorRemoved"/>.</remarks>
@@ -221,30 +167,4 @@
       mySubOperators.RemoveAt(index);
       OnSubOperatorRemoved(op, index);
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnSubOperatorRemoved"/>.</remarks>
-    public virtual bool TryRemoveSubOperator(int index) {
-      IOperator op = mySubOperators[index];
-      mySubOperators.RemoveAt(index);
-      if (IsValid()) {
-        OnSubOperatorRemoved(op, index);
-        return true;
-      } else {
-        mySubOperators.Insert(index, op);
-        return false;
-      }
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnSubOperatorRemoved"/>.</remarks>
-    public virtual bool TryRemoveSubOperator(int index, out ICollection<IConstraint> violatedConstraints) {
-      IOperator op = mySubOperators[index];
-      mySubOperators.RemoveAt(index);
-      if (IsValid(out violatedConstraints)) {
-        OnSubOperatorRemoved(op, index);
-        return true;
-      } else {
-        mySubOperators.Insert(index, op);
-        return false;
-      }
     }
     #endregion
@@ -266,28 +186,4 @@
     }
     /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableInfoAdded"/>.</remarks>
-    public virtual bool TryAddVariableInfo(IVariableInfo variableInfo) {
-      myVariableInfos.Add(variableInfo.FormalName, variableInfo);
-      if (IsValid()) {
-        OnVariableInfoAdded(variableInfo);
-        return true;
-      } else {
-        myVariableInfos.Remove(variableInfo.FormalName);
-        return false;
-      }
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableInfoAdded"/>.</remarks>
-    public virtual bool TryAddVariableInfo(IVariableInfo variableInfo, out ICollection<IConstraint> violatedConstraints) {
-      myVariableInfos.Add(variableInfo.FormalName, variableInfo);
-      if (IsValid(out violatedConstraints)) {
-        OnVariableInfoAdded(variableInfo);
-        return true;
-      } else {
-        myVariableInfos.Remove(variableInfo.FormalName);
-        return false;
-      }
-    }
-    /// <inheritdoc/>
     /// <remarks>Calls <see cref="OnVariableInfoRemoved"/>.</remarks>
     public virtual void RemoveVariableInfo(string formalName) {
@@ -297,37 +193,4 @@
         OnVariableInfoRemoved(variableInfo);
       }
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableInfoRemoved"/>.</remarks>
-    public virtual bool TryRemoveVariableInfo(string formalName) {
-      IVariableInfo variableInfo;
-      if (myVariableInfos.TryGetValue(formalName, out variableInfo)) {
-        myVariableInfos.Remove(formalName);
-        if (IsValid()) {
-          OnVariableInfoRemoved(variableInfo);
-          return true;
-        } else {
-          myVariableInfos.Add(formalName, variableInfo);
-          return false;
-        }
-      }
-      return true;
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableInfoRemoved"/>.</remarks>
-    public virtual bool TryRemoveVariableInfo(string formalName, out ICollection<IConstraint> violatedConstraints) {
-      IVariableInfo variableInfo;
-      if (myVariableInfos.TryGetValue(formalName, out variableInfo)) {
-        myVariableInfos.Remove(formalName);
-        if (IsValid(out violatedConstraints)) {
-          OnVariableInfoRemoved(variableInfo);
-          return true;
-        } else {
-          myVariableInfos.Add(formalName, variableInfo);
-          return false;
-        }
-      }
-      violatedConstraints = new List<IConstraint>();
-      return true;
     }
     #endregion
@@ -350,34 +213,4 @@
       variable.NameChanged += new EventHandler(Variable_NameChanged);
       OnVariableAdded(variable);
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableAdded"/> and adds <c>NameChanging</c> and <c>NameChanged</c>
-    /// event handlers.</remarks>
-    public virtual bool TryAddVariable(IVariable variable) {
-      myVariables.Add(variable.Name, variable);
-      if (IsValid()) {
-        variable.NameChanging += new EventHandler<CancelEventArgs<string>>(Variable_NameChanging);
-        variable.NameChanged += new EventHandler(Variable_NameChanged);
-        OnVariableAdded(variable);
-        return true;
-      } else {
-        myVariableInfos.Remove(variable.Name);
-        return false;
-      }
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableAdded"/> and adds <c>NameChanging</c> and <c>NameChanged</c>
-    /// event handlers.</remarks>
-    public virtual bool TryAddVariable(IVariable variable, out ICollection<IConstraint> violatedConstraints) {
-      myVariables.Add(variable.Name, variable);
-      if (IsValid(out violatedConstraints)) {
-        variable.NameChanging += new EventHandler<CancelEventArgs<string>>(Variable_NameChanging);
-        variable.NameChanged += new EventHandler(Variable_NameChanged);
-        OnVariableAdded(variable);
-        return true;
-      } else {
-        myVariableInfos.Remove(variable.Name);
-        return false;
-      }
     }
     /// <inheritdoc/>
@@ -392,43 +225,4 @@
         OnVariableRemoved(variable);
       }
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableRemoved"/> and removes <c>NameChanging</c> and <c>NameChanged</c>
-    /// event handlers.</remarks>
-    public virtual bool TryRemoveVariable(string name) {
-      IVariable variable;
-      if (myVariables.TryGetValue(name, out variable)) {
-        myVariables.Remove(name);
-        if (IsValid()) {
-          variable.NameChanging -= new EventHandler<CancelEventArgs<string>>(Variable_NameChanging);
-          variable.NameChanged -= new EventHandler(Variable_NameChanged);
-          OnVariableRemoved(variable);
-          return true;
-        } else {
-          myVariables.Add(name, variable);
-          return false;
-        }
-      }
-      return true;
-    }
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnVariableRemoved"/> and removes <c>NameChanging</c> and <c>NameChanged</c>
-    /// event handlers.</remarks>
-    public virtual bool TryRemoveVariable(string name, out ICollection<IConstraint> violatedConstraints) {
-      IVariable variable;
-      if (myVariables.TryGetValue(name, out variable)) {
-        myVariables.Remove(name);
-        if (IsValid(out violatedConstraints)) {
-          variable.NameChanging -= new EventHandler<CancelEventArgs<string>>(Variable_NameChanging);
-          variable.NameChanged -= new EventHandler(Variable_NameChanged);
-          OnVariableRemoved(variable);
-          return true;
-        } else {
-          myVariables.Add(name, variable);
-          return false;
-        }
-      }
-      violatedConstraints = new List<IConstraint>();
-      return true;
     }
     private void Variable_NameChanging(object sender, CancelEventArgs<string> e) {
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleData.cs	(revision 2523)
+++ 	(revision )
@@ -1,83 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Core;
-using System.Globalization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// Represents a double value having some constraints (e.g. smaller than 5.3).
-  /// </summary>
-  [EmptyStorableClass]
-  public class ConstrainedDoubleData : ConstrainedObjectData {
-    /// <summary>
-    /// Gets or sets the double value of the current instance as <see cref="DoubleData"/>.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ConstrainedObjectData.Data"/> of base 
-    /// class <see cref="ConstrainedObjectData"/>. No own data storage present.</remarks>
-    public new double Data {
-      get { return ((DoubleData)base.Data).Data; }
-      set { ((DoubleData)base.Data).Data = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedDoubleData"/> with default value <c>0.0</c>.
-    /// </summary>
-    public ConstrainedDoubleData()
-      : this(0.0) {
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedDoubleData"/> with the specified 
-    /// double value <paramref name="data"/> as <see cref="DoubleData"/>.
-    /// </summary>
-    /// <param name="data">The double value to represent.</param>
-    public ConstrainedDoubleData(double data)
-      : base() {
-      base.Data = new DoubleData(data);
-    }
-
-    /// <inheritdoc cref="ConstrainedObjectData.TrySetData(object)"/>
-    public virtual bool TrySetData(double data) {
-      return base.TrySetData(new DoubleData(data));
-    }
-    /// <inheritdoc cref="ConstrainedObjectData.TrySetData(object, out System.Collections.Generic.ICollection&lt;HeuristicLab.Core.IConstraint&gt;)"/>
-    public virtual bool TrySetData(double data, out ICollection<IConstraint> violatedConstraints) {
-      return base.TrySetData(new DoubleData(data), out violatedConstraints);
-    }
-
-    /// <summary>
-    /// Clones the current instance.
-    /// </summary>
-    /// <remarks>Uses the <see cref="ConstrainedObjectData.Clone"/> implementation of base class <see cref="ConstrainedObjectData"/>.</remarks>
-    /// <param name="clonedObjects">A dictionary of all already cloned objects.</param>
-    /// <returns>The cloned instance as <see cref="ConstrainedDoubleData"/>.</returns>
-    public override object Clone(IDictionary<Guid, object> clonedObjects) {
-      ConstrainedDoubleData clone = (ConstrainedDoubleData)base.Clone(clonedObjects);
-      return clone;
-    }
-
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleDataView.Designer.cs	(revision 2523)
+++ 	(revision )
@@ -1,91 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Data {
-  partial class ConstrainedDoubleDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <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);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.dataTextBox = new System.Windows.Forms.TextBox();
-      this.constrainedDataBaseView = new HeuristicLab.Core.Views.ConstrainedItemBaseView();
-      this.SuspendLayout();
-      // 
-      // dataTextBox
-      // 
-      this.dataTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTextBox.Location = new System.Drawing.Point(0, 0);
-      this.dataTextBox.Name = "dataTextBox";
-      this.dataTextBox.Size = new System.Drawing.Size(344, 20);
-      this.dataTextBox.TabIndex = 0;
-      this.dataTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.dataTextBox_Validating);
-      // 
-      // constrainedDataBaseView
-      // 
-      this.constrainedDataBaseView.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.constrainedDataBaseView.Caption = "Constrained Data";
-      this.constrainedDataBaseView.ConstrainedItem = null;
-      this.constrainedDataBaseView.Location = new System.Drawing.Point(0, 26);
-      this.constrainedDataBaseView.Name = "constrainedDataBaseView";
-      this.constrainedDataBaseView.Size = new System.Drawing.Size(344, 204);
-      this.constrainedDataBaseView.TabIndex = 1;
-      // 
-      // ConstrainedIntDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.constrainedDataBaseView);
-      this.Controls.Add(this.dataTextBox);
-      this.Name = "ConstrainedIntDataView";
-      this.Size = new System.Drawing.Size(344, 230);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox dataTextBox;
-    private HeuristicLab.Core.Views.ConstrainedItemBaseView constrainedDataBaseView;
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleDataView.cs	(revision 2523)
+++ 	(revision )
@@ -1,125 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="ConstrainedDoubleData"/>, 
-  /// symbolizing a double value being restricted to some constraints.
-  /// </summary>
-  [Content(typeof(ConstrainedDoubleData), true)]
-  public partial class ConstrainedDoubleDataView : ViewBase {
-    /// <summary>
-    /// Gets or sets the double value to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class <see cref="ViewBase"/>,
-    /// but also own data storage present.</remarks>
-    public ConstrainedDoubleData ConstrainedDoubleData {
-      get { return (ConstrainedDoubleData)Item; }
-      set {
-        base.Item = value;
-        constrainedDataBaseView.ConstrainedItem = value;
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="ConstrainedDoubleDataView"/>.
-    /// </summary>
-    public ConstrainedDoubleDataView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="ConstrainedDoubleDataView"/> with the given
-    /// <paramref name="constraintDoubleData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="constraintDoubleData"/> is not copied!</note>
-    /// </summary>
-    /// <param name="constraintDoubleData">The double value to represent visually.</param>
-    public ConstrainedDoubleDataView(ConstrainedDoubleData constraintDoubleData)
-      : this() {
-      ConstrainedDoubleData = constraintDoubleData;
-    }
-
-    /// <summary>
-    /// Removes the eventhandler from the underlying <see cref="ConstrainedDoubleData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      ConstrainedDoubleData.Changed -= new EventHandler(ConstrainedDoubleData_Changed);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds an eventhandler to the underlying <see cref="ConstrainedDoubleData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      ConstrainedDoubleData.Changed += new EventHandler(ConstrainedDoubleData_Changed);
-    }
-
-    /// <summary>
-    /// Updates the constrols with the latest double value.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (ConstrainedDoubleData == null) {
-        dataTextBox.Enabled = false;
-      } else {
-        dataTextBox.Enabled = true;
-        dataTextBox.Text = ConstrainedDoubleData.Data.ToString("r");
-      }
-    }
-
-    private void dataTextBox_Validating(object sender, CancelEventArgs e) {
-      e.Cancel = false;
-      double value;
-      try {
-        value = double.Parse(dataTextBox.Text);
-        ICollection<IConstraint> violatedConstraints;
-        if (!ConstrainedDoubleData.TrySetData(value, out violatedConstraints)) {
-          if (HeuristicLab.Core.Views.Auxiliary.ShowIgnoreConstraintViolationMessageBox(violatedConstraints) == DialogResult.Yes)
-            ConstrainedDoubleData.Data = value;
-          else
-            e.Cancel = true;
-        }
-      }
-      catch (Exception) {
-        dataTextBox.SelectAll();
-        e.Cancel = true;
-      }
-    }
-
-    private void ConstrainedDoubleData_Changed(object sender, EventArgs e) {
-      Refresh();
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleDataView.resx
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedDoubleDataView.resx	(revision 2523)
+++ 	(revision )
@@ -1,120 +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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntData.cs	(revision 2523)
+++ 	(revision )
@@ -1,82 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Core;
-using System.Globalization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The representation of an int value having some constraints (e.g. smaller than 2).
-  /// </summary>
-  [EmptyStorableClass]
-  public class ConstrainedIntData : ConstrainedObjectData {
-    /// <summary>
-    /// Gets or sets the int value of the current instance as <see cref="IntData"/>.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ConstrainedObjectData.Data"/> of base class 
-    /// <see cref="ConstrainedObjectData"/>. No own data storage present.</remarks>
-    public new int Data {
-      get { return ((IntData)base.Data).Data; }
-      set { ((IntData)base.Data).Data = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedIntData"/> with default value <c>0</c>.
-    /// </summary>
-    public ConstrainedIntData()
-      : this(0) {
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedIntData"/> with the specified 
-    /// int value <paramref name="data"/> as <see cref="IntData"/>.
-    /// </summary>
-    /// <param name="data">The integer value to represent.</param>
-    public ConstrainedIntData(int data)
-      : base() {
-      base.Data = new IntData(data);
-    }
-
-    /// <inheritdoc cref="ConstrainedObjectData.TrySetData(object)"/>
-    public virtual bool TrySetData(int data) {
-      return base.TrySetData(new IntData(data));
-    }
-    /// <inheritdoc cref="ConstrainedObjectData.TrySetData(object, out System.Collections.Generic.ICollection&lt;HeuristicLab.Core.IConstraint&gt;)"/>
-    public virtual bool TrySetData(int data, out ICollection<IConstraint> violatedConstraints) {
-      return base.TrySetData(new IntData(data), out violatedConstraints);
-    }
-
-    /// <summary>
-    /// Clones the current instance.
-    /// </summary>
-    /// <remarks>Uses the <see cref="ConstrainedObjectData.Clone"/> implementation of base class <see cref="ConstrainedObjectData"/>.</remarks>
-    /// <param name="clonedObjects">A dictionary of all already cloned objects.</param>
-    /// <returns>The clone instance as <see cref="ConstrainedIntData"/>.</returns>
-    public override object Clone(IDictionary<Guid, object> clonedObjects) {
-      ConstrainedIntData clone = (ConstrainedIntData)base.Clone(clonedObjects);
-      return clone;
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntDataView.Designer.cs	(revision 2523)
+++ 	(revision )
@@ -1,91 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Data {
-  partial class ConstrainedIntDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <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);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.dataTextBox = new System.Windows.Forms.TextBox();
-      this.constrainedDataBaseView = new HeuristicLab.Core.Views.ConstrainedItemBaseView();
-      this.SuspendLayout();
-      // 
-      // dataTextBox
-      // 
-      this.dataTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTextBox.Location = new System.Drawing.Point(0, 0);
-      this.dataTextBox.Name = "dataTextBox";
-      this.dataTextBox.Size = new System.Drawing.Size(344, 20);
-      this.dataTextBox.TabIndex = 0;
-      this.dataTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.dataTextBox_Validating);
-      // 
-      // constrainedDataBaseView
-      // 
-      this.constrainedDataBaseView.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.constrainedDataBaseView.Caption = "Constrained Data";
-      this.constrainedDataBaseView.ConstrainedItem = null;
-      this.constrainedDataBaseView.Location = new System.Drawing.Point(0, 26);
-      this.constrainedDataBaseView.Name = "constrainedDataBaseView";
-      this.constrainedDataBaseView.Size = new System.Drawing.Size(344, 204);
-      this.constrainedDataBaseView.TabIndex = 1;
-      // 
-      // ConstrainedIntDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.constrainedDataBaseView);
-      this.Controls.Add(this.dataTextBox);
-      this.Name = "ConstrainedIntDataView";
-      this.Size = new System.Drawing.Size(344, 230);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox dataTextBox;
-    private HeuristicLab.Core.Views.ConstrainedItemBaseView constrainedDataBaseView;
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntDataView.cs	(revision 2523)
+++ 	(revision )
@@ -1,125 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="ConstrainedIntDataView"/>, 
-  /// symbolizing an int value with some constraints.
-  /// </summary>
-  [Content(typeof(ConstrainedIntData), true)]
-  public partial class ConstrainedIntDataView : ViewBase {
-    /// <summary>
-    /// Gets or sets the int value to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class <see cref="ViewBase"/>,
-    /// but also own data storage present.</remarks>
-    public ConstrainedIntData ConstrainedIntData {
-      get { return (ConstrainedIntData)Item; }
-      set {
-        base.Item = value;
-        constrainedDataBaseView.ConstrainedItem = value;
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of class <see cref="ConstrainedIntDataView"/>.
-    /// </summary>
-    public ConstrainedIntDataView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of class <see cref="ConstrainedIntDataView"/> with the given
-    /// <paramref name="constraintIntData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="constraintIntData"/> is not copied!</note>
-    /// </summary>
-    /// <param name="constraintIntData">The int value to represent visually.</param>
-    public ConstrainedIntDataView(ConstrainedIntData constraintIntData)
-      : this() {
-      ConstrainedIntData = constraintIntData;
-    }
-
-    /// <summary>
-    /// Removes the eventhandler from the underlying <see cref="ConstrainedIntData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      ConstrainedIntData.Changed -= new EventHandler(ConstrainedIntData_Changed);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds an eventhandler to the underlying <see cref="ConstrainedIntData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      ConstrainedIntData.Changed += new EventHandler(ConstrainedIntData_Changed);
-    }
-
-    /// <summary>
-    /// Updates the controls with the latest int value.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (ConstrainedIntData == null) {
-        dataTextBox.Enabled = false;
-      } else {
-        dataTextBox.Enabled = true;
-        dataTextBox.Text = ConstrainedIntData.ToString();
-      }
-    }
-
-    private void dataTextBox_Validating(object sender, CancelEventArgs e) {
-      e.Cancel = false;
-      int value;
-      try {
-        value = int.Parse(dataTextBox.Text);
-        ICollection<IConstraint> violatedConstraints;
-        if (!ConstrainedIntData.TrySetData(value, out violatedConstraints)) {
-          if (HeuristicLab.Core.Views.Auxiliary.ShowIgnoreConstraintViolationMessageBox(violatedConstraints) == DialogResult.Yes)
-            ConstrainedIntData.Data = value;
-          else
-            e.Cancel = true;
-        }
-      }
-      catch (Exception) {
-        dataTextBox.SelectAll();
-        e.Cancel = true;
-      }
-    }
-
-    private void ConstrainedIntData_Changed(object sender, EventArgs e) {
-      Refresh();
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntDataView.resx
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedIntDataView.resx	(revision 2523)
+++ 	(revision )
@@ -1,120 +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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemList.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemList.cs	(revision 2523)
+++ 	(revision )
@@ -1,310 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// A class representing a list of elements 
-  /// (which are implementing the interface <see cref="IItem"/>) having some constraints.
-  /// </summary>
-  public class ConstrainedItemList : ConstrainedItemBase, IEnumerable, IEnumerable<IItem> {
-
-    [Storable]
-    private List<IItem> list;
-
-    [Storable]
-    private bool suspendConstraintCheck;
-
-    /// <summary>
-    /// Checks whether the test for the constraints is suspended. 
-    /// </summary>
-    public bool ConstraintCheckSuspended {
-      get { return suspendConstraintCheck; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ConstrainedItemList"/> with the constraint check enabled.
-    /// </summary>
-    public ConstrainedItemList()
-      : base() {
-      list = new List<IItem>();
-      suspendConstraintCheck = false;
-    }
-
-    /// <summary>
-    /// Clones the current instance.
-    /// </summary>
-    /// <remarks>The elements of the current instance are cloned with the 
-    /// <see cref="HeuristicLab.Core.Auxiliary.Clone"/> method of the class <see cref="Auxiliary"/>.</remarks>
-    /// <param name="clonedObjects">A dictionary of all already cloned objects.</param>
-    /// <returns>The cloned instance as <see cref="ConstrainedItemList"/>.</returns>
-    public override object Clone(IDictionary<Guid, object> clonedObjects) {
-      ConstrainedItemList clone = new ConstrainedItemList();
-      clonedObjects.Add(Guid, clone);
-      foreach (IConstraint constraint in Constraints)
-        clone.AddConstraint((IConstraint)Auxiliary.Clone(constraint, clonedObjects));
-      clone.suspendConstraintCheck = suspendConstraintCheck;
-      foreach (IItem item in list) {
-        clone.list.Add((IItem)Auxiliary.Clone(item, clonedObjects));
-      }
-      return clone;
-    }
-
-    /// <summary>
-    /// The string representation of the current list instance.
-    /// </summary>
-    /// <returns>The current list as string, each element separated by a semicolon. 
-    /// "Empty List" if the list has no elements.</returns>
-    public override string ToString() {
-      if (list.Count > 0) {
-        StringBuilder builder = new StringBuilder();
-        builder.Append(list[0].ToString());
-        for (int i = 1; i < list.Count; i++) {
-          builder.Append(";");
-          builder.Append(list[i].ToString());
-        }
-        return builder.ToString();
-      } else {
-        return "Empty List";
-      }
-    }
-
-    /// <inheritdoc cref="List&lt;T&gt;.IndexOf(T)"/>
-    public int IndexOf(IItem item) {
-      return list.IndexOf(item);
-    }
-
-    /// <summary>
-    /// Sets <c>suspendConstraintCheck</c> to <c>true</c>.
-    /// </summary>
-    public void BeginCombinedOperation() {
-      suspendConstraintCheck = true;
-    }
-
-    /// <summary>
-    /// Checks whether the current instance fulfills all constraints.
-    /// </summary>
-    /// <param name="violatedConstraints">Output parameter, 
-    /// contains all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if all constraints could be fulfilled, <c>false</c> otherwise.</returns>
-    public bool EndCombinedOperation(out ICollection<IConstraint> violatedConstraints) {
-      if (IsValid(out violatedConstraints))
-        suspendConstraintCheck = false;
-      else
-        suspendConstraintCheck = true;
-
-      return !suspendConstraintCheck;
-    }
-
-    /// <summary>
-    /// Adds a new <paramref name="item"/> at a specified <paramref name="index"/> to the current instance if all constraints are fulfilled.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnItemAdded"/> if the insertion was successful.</remarks>
-    /// <param name="index">The position where to insert the new element.</param>
-    /// <param name="item">The new element to insert.</param>
-    /// <param name="violatedConstraints">Output parameter, all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if the insertion was successful, <c>false</c> otherwise.</returns>
-    public bool TryInsert(int index, IItem item, out ICollection<IConstraint> violatedConstraints) {
-      list.Insert(index, item);
-      violatedConstraints = new List<IConstraint>();
-      if (suspendConstraintCheck || IsValid(out violatedConstraints)) {
-        OnItemAdded(item, index);
-        return true;
-      } else {
-        list.RemoveAt(index);
-        return false;
-      }
-    }
-
-    /// <summary>
-    /// Removes an element at the specified <paramref name="index"/> 
-    /// from the current instance if all constraints are fulfilled.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnItemRemoved"/> if the deletion was successful.</remarks>
-    /// <param name="index">The position where to remove the element.</param>
-    /// <param name="violatedConstraints">Output parameter, all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if the element could be removed successfully, <c>false</c> otherwise.</returns>
-    public bool TryRemoveAt(int index, out ICollection<IConstraint> violatedConstraints) {
-      IItem item = list[index];
-      list.RemoveAt(index);
-      violatedConstraints = new List<IConstraint>();
-      if (suspendConstraintCheck || IsValid(out violatedConstraints)) {
-        OnItemRemoved(item, index);
-        return true;
-      } else {
-        list.Insert(index, item);
-        return false;
-      }
-    }
-
-    /// <summary>
-    /// Gets the element of the current instance at the specified <paramref name="index"/>.
-    /// </summary>
-    /// <param name="index">The position of the searched element.</param>
-    /// <returns>The searched element as <see cref="IItem"/>.</returns>
-    public IItem this[int index] {
-      get { return list[index]; }
-    }
-
-    /// <summary>
-    /// Changes the element at a specified position if all constraints are fulfilled.
-    /// </summary>
-    /// <param name="index">The position where to change the element.</param>
-    /// <param name="item">The element that replaces the current one.</param>
-    /// <param name="violatedConstraints">Output parameter, all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if the substitution was successful, <c>false</c> otherwise.</returns>
-    public bool TrySetAt(int index, IItem item, out ICollection<IConstraint> violatedConstraints) {
-      IItem backup = this[index];
-      list[index] = item;
-      violatedConstraints = new List<IConstraint>();
-      if (suspendConstraintCheck || IsValid(out violatedConstraints)) {
-        return true;
-      } else {
-        list[index] = backup;
-        return false;
-      }
-    }
-
-    /// <summary>
-    /// Adds a new <paramref name="item"/> to the current list if all constraints are fulfilled.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnItemAdded"/> if the add was successful.</remarks>
-    /// <param name="item">The element to add.</param>
-    /// <param name="violatedConstraints">Output parameter, all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if the element could be successfully added, <c>false</c> otherwise.</returns>
-    public bool TryAdd(IItem item, out ICollection<IConstraint> violatedConstraints) {
-      list.Add(item);
-      violatedConstraints = new List<IConstraint>();
-      if (suspendConstraintCheck || IsValid(out violatedConstraints)) {
-        OnItemAdded(item, list.Count - 1);
-        return true;
-      } else {
-        list.RemoveAt(list.Count - 1);
-        return false;
-      }
-    }
-    /// <summary>
-    /// Empties the current list.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnCleared"/>.</remarks>
-    public void Clear() {
-      list.Clear();
-      OnCleared();
-    }
-    /// <inheritdoc cref="List&lt;T&gt;.Contains"/>
-    public bool Contains(IItem item) {
-      return list.Contains(item);
-    }
-    /// <inheritdoc cref="List&lt;T&gt;.CopyTo(T[],int)"/>
-    public void CopyTo(IItem[] array, int arrayIndex) {
-      list.CopyTo(array, arrayIndex);
-    }
-    /// <inheritdoc cref="List&lt;T&gt;.Count"/>
-    public int Count {
-      get { return list.Count; }
-    }
-    /// <summary>
-    /// Checks whether the current instance is read-only.
-    /// </summary>
-    /// <remarks>Always returns <c>false</c>.</remarks>
-    public bool IsReadOnly {
-      get { return false; }
-    }
-    /// <summary>
-    /// Removes a specified <paramref name="item"/> from the 
-    /// current instance if all constraints are fulfilled.
-    /// </summary>
-    /// <param name="item">The element to remove.</param>
-    /// <param name="violatedConstraints">Output parameter, all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if the deletion was successful, <c>false</c> otherwise.</returns>
-    public bool TryRemove(IItem item, out ICollection<IConstraint> violatedConstraints) {
-      int index = list.IndexOf(item);
-      if (index >= 0) {
-        return TryRemoveAt(index, out violatedConstraints);
-      } else {
-        violatedConstraints = new List<IConstraint>();
-        return false;
-      }
-    }
-
-    /// <inheritdoc cref="List&lt;T&gt;.GetEnumerator"/>
-    public IEnumerator<IItem> GetEnumerator() {
-      return list.GetEnumerator();
-    }
-
-    /// <inheritdoc cref="List&lt;T&gt;.GetEnumerator"/>
-    IEnumerator IEnumerable.GetEnumerator() {
-      return list.GetEnumerator();
-    }
-
-    /// <summary>
-    /// Occurs when a new item is added.
-    /// </summary>
-    public event EventHandler<EventArgs<IItem, int>> ItemAdded;
-    /// <summary>
-    /// Fires a new <c>ItemAdded</c> event.
-    /// </summary>         
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ItemBase.OnChanged"/>.</remarks>
-    /// <param name="item">The element that was added.</param>
-    /// <param name="index">The position where the element was added.</param>
-    protected virtual void OnItemAdded(IItem item, int index) {
-      if (ItemAdded != null)
-        ItemAdded(this, new EventArgs<IItem, int>(item, index));
-      OnChanged();
-    }
-    /// <summary>
-    /// Occurs when an element is removed from the current instance.
-    /// </summary>
-    public event EventHandler<EventArgs<IItem, int>> ItemRemoved;
-    /// <summary>
-    /// Fires a new <c>ItemRemoved</c> event.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ItemBase.OnChanged"/>.</remarks>
-    /// <param name="item">The element that has been removed.</param>
-    /// <param name="index">The position from where it has been removed.</param>
-    protected virtual void OnItemRemoved(IItem item, int index) {
-      if (ItemRemoved != null)
-        ItemRemoved(this, new EventArgs<IItem, int>(item, index));
-      OnChanged();
-    }
-    /// <summary>
-    /// Occurs when the current list is emptied.
-    /// </summary>
-    public event EventHandler Cleared;
-    /// <summary>
-    /// Fires a new <c>Cleared</c> event.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ItemBase.OnChanged"/>.</remarks>
-    protected virtual void OnCleared() {
-      if (Cleared != null)
-        Cleared(this, new EventArgs());
-      OnChanged();
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemListView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemListView.Designer.cs	(revision 2523)
+++ 	(revision )
@@ -1,218 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Data {
-  partial class ConstrainedItemListView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <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);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.itemsSplitContainer = new System.Windows.Forms.SplitContainer();
-      this.itemsGroupBox = new System.Windows.Forms.GroupBox();
-      this.itemsListView = new System.Windows.Forms.ListView();
-      this.removeItemButton = new System.Windows.Forms.Button();
-      this.addItemButton = new System.Windows.Forms.Button();
-      this.detailsGroupBox = new System.Windows.Forms.GroupBox();
-      this.tabControl = new System.Windows.Forms.TabControl();
-      this.itemsTabPage = new System.Windows.Forms.TabPage();
-      this.constraintsTabPage = new System.Windows.Forms.TabPage();
-      this.constraintsConstrainedItemBaseView = new HeuristicLab.Core.Views.ConstrainedItemBaseView();
-      this.itemsSplitContainer.Panel1.SuspendLayout();
-      this.itemsSplitContainer.Panel2.SuspendLayout();
-      this.itemsSplitContainer.SuspendLayout();
-      this.itemsGroupBox.SuspendLayout();
-      this.tabControl.SuspendLayout();
-      this.itemsTabPage.SuspendLayout();
-      this.constraintsTabPage.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // itemsSplitContainer
-      // 
-      this.itemsSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.itemsSplitContainer.Location = new System.Drawing.Point(3, 3);
-      this.itemsSplitContainer.Name = "itemsSplitContainer";
-      // 
-      // itemsSplitContainer.Panel1
-      // 
-      this.itemsSplitContainer.Panel1.Controls.Add(this.itemsGroupBox);
-      // 
-      // itemsSplitContainer.Panel2
-      // 
-      this.itemsSplitContainer.Panel2.Controls.Add(this.detailsGroupBox);
-      this.itemsSplitContainer.Size = new System.Drawing.Size(367, 378);
-      this.itemsSplitContainer.SplitterDistance = 162;
-      this.itemsSplitContainer.TabIndex = 2;
-      // 
-      // itemsGroupBox
-      // 
-      this.itemsGroupBox.Controls.Add(this.itemsListView);
-      this.itemsGroupBox.Controls.Add(this.removeItemButton);
-      this.itemsGroupBox.Controls.Add(this.addItemButton);
-      this.itemsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.itemsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.itemsGroupBox.Name = "itemsGroupBox";
-      this.itemsGroupBox.Size = new System.Drawing.Size(162, 378);
-      this.itemsGroupBox.TabIndex = 0;
-      this.itemsGroupBox.TabStop = false;
-      this.itemsGroupBox.Text = "Items";
-      // 
-      // itemsListView
-      // 
-      this.itemsListView.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.itemsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
-      this.itemsListView.Location = new System.Drawing.Point(6, 19);
-      this.itemsListView.Name = "itemsListView";
-      this.itemsListView.ShowGroups = false;
-      this.itemsListView.Size = new System.Drawing.Size(153, 324);
-      this.itemsListView.TabIndex = 0;
-      this.itemsListView.UseCompatibleStateImageBehavior = false;
-      this.itemsListView.View = System.Windows.Forms.View.List;
-      this.itemsListView.SelectedIndexChanged += new System.EventHandler(this.itemsListView_SelectedIndexChanged);
-      this.itemsListView.KeyUp += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyUp);
-      // 
-      // removeItemButton
-      // 
-      this.removeItemButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.removeItemButton.Location = new System.Drawing.Point(84, 349);
-      this.removeItemButton.Name = "removeItemButton";
-      this.removeItemButton.Size = new System.Drawing.Size(75, 23);
-      this.removeItemButton.TabIndex = 4;
-      this.removeItemButton.Text = "Remove";
-      this.removeItemButton.UseVisualStyleBackColor = true;
-      this.removeItemButton.Click += new System.EventHandler(this.removeItemButton_Click);
-      // 
-      // addItemButton
-      // 
-      this.addItemButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.addItemButton.Location = new System.Drawing.Point(3, 349);
-      this.addItemButton.Name = "addItemButton";
-      this.addItemButton.Size = new System.Drawing.Size(75, 23);
-      this.addItemButton.TabIndex = 3;
-      this.addItemButton.Text = "Add";
-      this.addItemButton.UseVisualStyleBackColor = true;
-      this.addItemButton.Click += new System.EventHandler(this.addItemButton_Click);
-      // 
-      // detailsGroupBox
-      // 
-      this.detailsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.detailsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.detailsGroupBox.Name = "detailsGroupBox";
-      this.detailsGroupBox.Size = new System.Drawing.Size(201, 378);
-      this.detailsGroupBox.TabIndex = 0;
-      this.detailsGroupBox.TabStop = false;
-      this.detailsGroupBox.Text = "Details";
-      // 
-      // tabControl
-      // 
-      this.tabControl.Controls.Add(this.itemsTabPage);
-      this.tabControl.Controls.Add(this.constraintsTabPage);
-      this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tabControl.Location = new System.Drawing.Point(0, 0);
-      this.tabControl.Name = "tabControl";
-      this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(381, 410);
-      this.tabControl.TabIndex = 5;
-      // 
-      // itemsTabPage
-      // 
-      this.itemsTabPage.Controls.Add(this.itemsSplitContainer);
-      this.itemsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.itemsTabPage.Name = "itemsTabPage";
-      this.itemsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.itemsTabPage.Size = new System.Drawing.Size(373, 384);
-      this.itemsTabPage.TabIndex = 0;
-      this.itemsTabPage.Text = "Items";
-      this.itemsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // constraintsTabPage
-      // 
-      this.constraintsTabPage.Controls.Add(this.constraintsConstrainedItemBaseView);
-      this.constraintsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.constraintsTabPage.Name = "constraintsTabPage";
-      this.constraintsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.constraintsTabPage.Size = new System.Drawing.Size(373, 384);
-      this.constraintsTabPage.TabIndex = 1;
-      this.constraintsTabPage.Text = "Constraints";
-      this.constraintsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // constraintsConstrainedItemBaseView
-      // 
-      this.constraintsConstrainedItemBaseView.Caption = "Constrained Item";
-      this.constraintsConstrainedItemBaseView.ConstrainedItem = null;
-      this.constraintsConstrainedItemBaseView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constraintsConstrainedItemBaseView.Location = new System.Drawing.Point(3, 3);
-      this.constraintsConstrainedItemBaseView.Name = "constraintsConstrainedItemBaseView";
-      this.constraintsConstrainedItemBaseView.Size = new System.Drawing.Size(367, 378);
-      this.constraintsConstrainedItemBaseView.TabIndex = 0;
-      // 
-      // ConstrainedItemListView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl);
-      this.Name = "ConstrainedItemListView";
-      this.Size = new System.Drawing.Size(381, 410);
-      this.itemsSplitContainer.Panel1.ResumeLayout(false);
-      this.itemsSplitContainer.Panel2.ResumeLayout(false);
-      this.itemsSplitContainer.ResumeLayout(false);
-      this.itemsGroupBox.ResumeLayout(false);
-      this.tabControl.ResumeLayout(false);
-      this.itemsTabPage.ResumeLayout(false);
-      this.constraintsTabPage.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.SplitContainer itemsSplitContainer;
-    private System.Windows.Forms.Button addItemButton;
-    private System.Windows.Forms.Button removeItemButton;
-    private System.Windows.Forms.TabControl tabControl;
-    private System.Windows.Forms.TabPage itemsTabPage;
-    private System.Windows.Forms.TabPage constraintsTabPage;
-    private System.Windows.Forms.GroupBox itemsGroupBox;
-    private System.Windows.Forms.GroupBox detailsGroupBox;
-    private HeuristicLab.Core.Views.ConstrainedItemBaseView constraintsConstrainedItemBaseView;
-    private System.Windows.Forms.ListView itemsListView;
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemListView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemListView.cs	(revision 2523)
+++ 	(revision )
@@ -1,212 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.Common;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="ConstrainedItemList"/>.
-  /// </summary>
-  [Content(typeof(ConstrainedItemList), true)]
-  public partial class ConstrainedItemListView : ViewBase {
-    private ChooseItemDialog chooseItemDialog;
-
-
-    /// <summary>
-    /// Gets or sets the item list to represent.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class <see cref="ViewBase"/>.</remarks>
-    public ConstrainedItemList ConstrainedItemList {
-      get { return (ConstrainedItemList)base.Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="ConstrainedItemListView"/>.
-    /// </summary>
-    public ConstrainedItemListView() {
-      InitializeComponent();
-      //itemsListView.Columns[0].Width = Math.Max(0, itemsListView.Width - 25);
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="ConstrainedItemListView"/> with the given
-    /// <paramref name="constrainedItemList"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="constrainedItemList"/> is not copied!</note>
-    /// </summary>
-    /// <param name="constrainedItemList">The item list to represent visually.</param>
-    public ConstrainedItemListView(ConstrainedItemList constrainedItemList)
-      : this() {
-      ConstrainedItemList = constrainedItemList;
-    }
-
-    /// <summary>
-    /// Removes the eventhandlers from the underlying <see cref="ConstrainedItemList"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      ConstrainedItemList.ItemAdded -= new EventHandler<EventArgs<IItem, int>>(ConstrainedItemList_ItemAdded);
-      ConstrainedItemList.ItemRemoved -= new EventHandler<EventArgs<IItem, int>>(ConstrainedItemList_ItemRemoved);
-      ConstrainedItemList.Cleared -= new EventHandler(ConstrainedItemList_Cleared);
-      base.RemoveItemEvents();
-    }
-    
-    /// <summary>
-    /// Adds eventhandlers to the underlying <see cref="ConstrainedItemList"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      ConstrainedItemList.ItemAdded += new EventHandler<EventArgs<IItem, int>>(ConstrainedItemList_ItemAdded);
-      ConstrainedItemList.ItemRemoved += new EventHandler<EventArgs<IItem, int>>(ConstrainedItemList_ItemRemoved);
-      ConstrainedItemList.Cleared += new EventHandler(ConstrainedItemList_Cleared);
-    }
-
-    /// <summary>
-    /// Updates all controls with the latest elements in the list.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      detailsGroupBox.Enabled = false;
-      detailsGroupBox.Controls.Clear();
-      removeItemButton.Enabled = false;
-
-      if (ConstrainedItemList == null) {
-        itemsGroupBox.Enabled = false;
-        itemsSplitContainer.Enabled = false;
-        constraintsConstrainedItemBaseView.Enabled = false;
-      } else {
-        foreach (ListViewItem item in itemsListView.Items) {
-          ((IItem)item.Tag).Changed -= new EventHandler(Item_Changed);
-        }
-        itemsListView.Items.Clear();
-        foreach (IItem data in ConstrainedItemList) {
-          ListViewItem item = new ListViewItem();
-          item.Text = data.ToString();
-          item.Tag = data;
-          itemsListView.Items.Add(item);
-          data.Changed += new EventHandler(Item_Changed);
-        }
-        itemsSplitContainer.Enabled = true;
-        constraintsConstrainedItemBaseView.ConstrainedItem = ConstrainedItemList;
-        constraintsConstrainedItemBaseView.Enabled = true;
-      }
-    }
-
-    private void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      detailsGroupBox.Enabled = false;
-      if (detailsGroupBox.Controls.Count > 0) detailsGroupBox.Controls[0].Dispose();
-      detailsGroupBox.Controls.Clear();
-      if (itemsListView.SelectedItems.Count == 1) {
-        IItem data = (IItem)itemsListView.SelectedItems[0].Tag;
-        Control view = (Control)MainFormManager.CreateDefaultView(data);
-        detailsGroupBox.Controls.Add(view);
-        view.Dock = DockStyle.Fill;
-        detailsGroupBox.Enabled = true;
-      }
-      removeItemButton.Enabled = (itemsListView.SelectedItems.Count == 1);
-    }
-
-    #region ConstrainedItemList changes
-    void ConstrainedItemList_ItemAdded(object sender, EventArgs<IItem, int> e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler<EventArgs<IItem, int>>(ConstrainedItemList_ItemAdded), sender, e);
-      else {
-        ListViewItem item = new ListViewItem();
-        item.Text = e.Value.ToString();
-        item.Tag = e.Value;
-        itemsListView.Items.Insert(e.Value2, item);
-        e.Value.Changed += new EventHandler(Item_Changed);
-      }
-    }
-
-    void ConstrainedItemList_ItemRemoved(object sender, EventArgs<IItem, int> e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler<EventArgs<IItem, int>>(ConstrainedItemList_ItemRemoved), sender, e);
-      else {
-        itemsListView.Items.RemoveAt(e.Value2);
-        e.Value.Changed -= new EventHandler(Item_Changed);
-      }
-    }
-
-    void ConstrainedItemList_Cleared(object sender, EventArgs e) {
-      Refresh();
-    }
-
-    void Item_Changed(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Item_Changed), sender, e);
-      else {
-        IItem data = (IItem)sender;
-        foreach (ListViewItem item in itemsListView.Items) {
-          if (item.Tag == data)
-            item.Text = data.ToString();
-        }
-      }
-    }
-    #endregion
-
-    #region Button events
-    private void addItemButton_Click(object sender, EventArgs e) {
-      if (chooseItemDialog == null) {
-        chooseItemDialog = new ChooseItemDialog();
-        chooseItemDialog.Caption = "Add Item";
-      }
-      if (chooseItemDialog.ShowDialog(this) == DialogResult.OK) {
-        ICollection<IConstraint> violatedConstraints;
-        if (!ConstrainedItemList.TryAdd(chooseItemDialog.Item, out violatedConstraints)) {
-          HeuristicLab.Core.Views.Auxiliary.ShowConstraintViolationMessageBox(violatedConstraints);
-        }
-      }
-    }
-
-    private void removeItemButton_Click(object sender, EventArgs e) {
-      ICollection<IConstraint> violatedConstraints;
-      if (!ConstrainedItemList.TryRemoveAt(itemsListView.SelectedIndices[0], out violatedConstraints)) {
-        HeuristicLab.Core.Views.Auxiliary.ShowConstraintViolationMessageBox(violatedConstraints);
-      }
-    }
-    #endregion
-
-    #region Key events
-    private void itemsListView_KeyUp(object sender, KeyEventArgs e) {
-      if (e.KeyCode == Keys.Delete) {
-        ICollection<IConstraint> violatedConstraints;
-        if (!ConstrainedItemList.TryRemoveAt(itemsListView.SelectedIndices[0], out violatedConstraints)) {
-          HeuristicLab.Core.Views.Auxiliary.ShowConstraintViolationMessageBox(violatedConstraints);
-        }
-      }
-    }
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemListView.resx
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedItemListView.resx	(revision 2523)
+++ 	(revision )
@@ -1,120 +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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: trunk/sources/HeuristicLab.Data/3.3/ConstrainedObjectData.cs
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/ConstrainedObjectData.cs	(revision 2523)
+++ 	(revision )
@@ -1,143 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// A class representing all basic data types having some constraints.
-  /// </summary>
-  public class ConstrainedObjectData : ConstrainedItemBase, IObjectData {
-
-    [Storable]
-    private object myData;
-    /// <summary>
-    /// Gets or sets the object with constraints to represent.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ItemBase.OnChanged"/> in the setter.
-    /// </remarks>
-    public virtual object Data {
-      get { return myData; }
-      set {
-        if (myData != value) {
-          myData = value;
-          OnChanged();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Assigns the new <paramref name="data"/> if it is valid according to the constraints.
-    /// </summary>
-    /// <param name="data">The data to assign.</param>
-    /// <returns><c>true</c> if the new <paramref name="data"/> could be assigned, <c>false</c> otherwise.</returns>
-    public virtual bool TrySetData(object data) {
-      if (myData != data) {
-        object backup = myData;
-        myData = data;
-        if (IsValid()) {
-          OnChanged();
-          return true;
-        } else {
-          myData = backup;
-          return false;
-        }
-      }
-      return true;
-    }
-    /// <summary>
-    /// Assigns the new object <paramref name="data"/> if it is valid according to the constraints.
-    /// </summary>
-    /// <param name="data">The data to assign.</param>
-    /// <param name="violatedConstraints">Output parameter, containing all constraints that could not be fulfilled.</param>
-    /// <returns><c>true</c> if the new <paramref name="data"/> could be assigned, <c>false</c> otherwise.</returns>
-    public virtual bool TrySetData(object data, out ICollection<IConstraint> violatedConstraints) {
-      if (myData != data) {
-        object backup = myData;
-        myData = data;
-        if (IsValid(out violatedConstraints)) {
-          OnChanged();
-          return true;
-        } else {
-          myData = backup;
-          return false;
-        }
-      }
-      violatedConstraints = new List<IConstraint>();
-      return true;
-    }
-
-    /// <summary>
-    /// Clones the current object.
-    /// </summary>
-    /// <remarks>HeuristicLab data items are cloned with the <see cref="HeuristicLab.Core.Auxiliary.Clone"/> method of 
-    /// class <see cref="Auxiliary"/> (deep copy), all other items (like basic data types) 
-    /// are cloned with their own <c>Clone</c> methods (shadow copy).</remarks>
-    /// <param name="clonedObjects">All already cloned objects.</param>
-    /// <returns>The cloned object as <see cref="ConstrainedObjectData"/>.</returns>
-    public override object Clone(IDictionary<Guid, object> clonedObjects) {
-      ConstrainedObjectData clone = (ConstrainedObjectData)base.Clone(clonedObjects);
-      if (Data is IStorable)
-        clone.myData = Auxiliary.Clone((IStorable)Data, clonedObjects);
-      else if (Data is ICloneable)
-        clone.myData = ((ICloneable)Data).Clone();
-      else
-        throw new InvalidOperationException("contained object is not cloneable");
-      return clone;
-    }
-
-    /// <summary>
-    /// Compares the current instance to the given <paramref name="obj"/>.
-    /// </summary>
-    /// <remarks>Can also compare basic data types with their representing HeuristicLab data types 
-    /// (e.g. a <see cref="ConstrainedDoubleData"/> with a double value).</remarks>
-    /// <exception cref="InvalidOperationException">Thrown when the current 
-    /// instance does not implement the interface <see cref="IComparable"/></exception>
-    /// <param name="obj">The object to compare the current instance to.</param>
-    /// <returns><c>0</c> if the objects are the same, a value smaller than zero when the current instance
-    /// is smaller than the given <paramref name="obj"/> and a value greater than zero 
-    /// when the current instance is greater than the given <paramref name="obj"/>.</returns>
-    public int CompareTo(object obj) {
-      IComparable comparable = Data as IComparable;
-      if (comparable != null) {
-        IObjectData other = obj as IObjectData;
-        if (other != null)
-          return comparable.CompareTo(other.Data);
-        else
-          return comparable.CompareTo(obj);
-      }
-      throw new InvalidOperationException("Cannot compare as contained object doesn't implement IComparable");
-    }
-
-    /// <summary>
-    /// The string representation of the current instance.
-    /// </summary>
-    /// <returns>The current instance as a string.</returns>
-    public override string ToString() {
-      return Data.ToString();
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 2523)
+++ trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 2524)
@@ -128,26 +128,4 @@
       <DependentUpon>BoolMatrixDataView.cs</DependentUpon>
     </Compile>
-    <Compile Include="ConstrainedItemList.cs" />
-    <Compile Include="ConstrainedItemListView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedItemListView.Designer.cs">
-      <DependentUpon>ConstrainedItemListView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ConstrainedObjectData.cs" />
-    <Compile Include="ConstrainedIntData.cs" />
-    <Compile Include="ConstrainedIntDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedIntDataView.Designer.cs">
-      <DependentUpon>ConstrainedIntDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ConstrainedDoubleData.cs" />
-    <Compile Include="ConstrainedDoubleDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ConstrainedDoubleDataView.Designer.cs">
-      <DependentUpon>ConstrainedDoubleDataView.cs</DependentUpon>
-    </Compile>
     <Compile Include="EditKeyValueDialog.cs">
       <SubType>Form</SubType>
@@ -277,16 +255,4 @@
     <EmbeddedResource Include="BoolDataView.resx">
       <DependentUpon>BoolDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedIntDataView.resx">
-      <DependentUpon>ConstrainedIntDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedDoubleDataView.resx">
-      <DependentUpon>ConstrainedDoubleDataView.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ConstrainedItemListView.resx">
-      <DependentUpon>ConstrainedItemListView.cs</DependentUpon>
       <SubType>Designer</SubType>
     </EmbeddedResource>
Index: trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 2524)
@@ -57,6 +57,4 @@
       this.variablesTabPage = new System.Windows.Forms.TabPage();
       this.operatorBaseVariablesView = new HeuristicLab.Core.Views.OperatorBaseVariablesView();
-      this.constraintsTabPage = new System.Windows.Forms.TabPage();
-      this.constrainedItemBaseView = new HeuristicLab.Core.Views.ConstrainedItemBaseView();
       this.descriptionTabPage = new System.Windows.Forms.TabPage();
       this.descriptionTextBox = new System.Windows.Forms.TextBox();
@@ -65,5 +63,4 @@
       this.variableInfosTabPage.SuspendLayout();
       this.variablesTabPage.SuspendLayout();
-      this.constraintsTabPage.SuspendLayout();
       this.descriptionTabPage.SuspendLayout();
       this.SuspendLayout();
@@ -74,5 +71,4 @@
       this.tabControl.Controls.Add(this.variableInfosTabPage);
       this.tabControl.Controls.Add(this.variablesTabPage);
-      this.tabControl.Controls.Add(this.constraintsTabPage);
       this.tabControl.Controls.Add(this.descriptionTabPage);
       this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -206,25 +202,4 @@
       this.operatorBaseVariablesView.TabIndex = 0;
       // 
-      // constraintsTabPage
-      // 
-      this.constraintsTabPage.Controls.Add(this.constrainedItemBaseView);
-      this.constraintsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.constraintsTabPage.Name = "constraintsTabPage";
-      this.constraintsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.constraintsTabPage.Size = new System.Drawing.Size(427, 325);
-      this.constraintsTabPage.TabIndex = 3;
-      this.constraintsTabPage.Text = "Constraints";
-      this.constraintsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // constrainedItemBaseView
-      // 
-      this.constrainedItemBaseView.Caption = "Constrained Item";
-      this.constrainedItemBaseView.ConstrainedItem = null;
-      this.constrainedItemBaseView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constrainedItemBaseView.Location = new System.Drawing.Point(3, 3);
-      this.constrainedItemBaseView.Name = "constrainedItemBaseView";
-      this.constrainedItemBaseView.Size = new System.Drawing.Size(421, 319);
-      this.constrainedItemBaseView.TabIndex = 0;
-      // 
       // descriptionTabPage
       // 
@@ -262,5 +237,4 @@
       this.variableInfosTabPage.ResumeLayout(false);
       this.variablesTabPage.ResumeLayout(false);
-      this.constraintsTabPage.ResumeLayout(false);
       this.descriptionTabPage.ResumeLayout(false);
       this.descriptionTabPage.PerformLayout();
@@ -278,6 +252,4 @@
     private System.Windows.Forms.TabPage variablesTabPage;
     private HeuristicLab.Core.Views.OperatorBaseVariablesView operatorBaseVariablesView;
-    private System.Windows.Forms.TabPage constraintsTabPage;
-    private HeuristicLab.Core.Views.ConstrainedItemBaseView constrainedItemBaseView;
     private System.Windows.Forms.TabPage descriptionTabPage;
     private System.Windows.Forms.TextBox descriptionTextBox;
Index: trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 2524)
@@ -51,5 +51,4 @@
       operatorBaseVariableInfosView.Operator = null;
       operatorBaseVariablesView.Operator = null;
-      constrainedItemBaseView.ConstrainedItem = null;
       ProgrammableOperator.CodeChanged -= new EventHandler(ProgrammableOperator_CodeChanged);
       ProgrammableOperator.DescriptionChanged -= new EventHandler(ProgrammableOperator_DescriptionChanged);
@@ -61,5 +60,4 @@
       operatorBaseVariableInfosView.Operator = ProgrammableOperator;
       operatorBaseVariablesView.Operator = ProgrammableOperator;
-      constrainedItemBaseView.ConstrainedItem = ProgrammableOperator;
       ProgrammableOperator.CodeChanged += new EventHandler(ProgrammableOperator_CodeChanged);
       ProgrammableOperator.DescriptionChanged += new EventHandler(ProgrammableOperator_DescriptionChanged);
Index: trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.Designer.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.Designer.cs	(revision 2524)
@@ -52,6 +52,4 @@
       this.variablesTabPage = new System.Windows.Forms.TabPage();
       this.operatorBaseVariablesView = new HeuristicLab.Core.Views.OperatorBaseVariablesView();
-      this.constraintsTabPage = new System.Windows.Forms.TabPage();
-      this.constrainedItemBaseView = new HeuristicLab.Core.Views.ConstrainedItemBaseView();
       this.descriptionTabPage = new System.Windows.Forms.TabPage();
       this.descriptionTextBox = new System.Windows.Forms.TextBox();
@@ -62,5 +60,4 @@
       this.variableInfosTabPage.SuspendLayout();
       this.variablesTabPage.SuspendLayout();
-      this.constraintsTabPage.SuspendLayout();
       this.descriptionTabPage.SuspendLayout();
       this.SuspendLayout();
@@ -71,5 +68,4 @@
       this.tabControl.Controls.Add(this.variableInfosTabPage);
       this.tabControl.Controls.Add(this.variablesTabPage);
-      this.tabControl.Controls.Add(this.constraintsTabPage);
       this.tabControl.Controls.Add(this.descriptionTabPage);
       this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -148,25 +144,4 @@
       this.operatorBaseVariablesView.TabIndex = 0;
       // 
-      // constraintsTabPage
-      // 
-      this.constraintsTabPage.Controls.Add(this.constrainedItemBaseView);
-      this.constraintsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.constraintsTabPage.Name = "constraintsTabPage";
-      this.constraintsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.constraintsTabPage.Size = new System.Drawing.Size(389, 309);
-      this.constraintsTabPage.TabIndex = 3;
-      this.constraintsTabPage.Text = "Constraints";
-      this.constraintsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // constrainedItemBaseView
-      // 
-      this.constrainedItemBaseView.Caption = "Constrained Item";
-      this.constrainedItemBaseView.ConstrainedItem = null;
-      this.constrainedItemBaseView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.constrainedItemBaseView.Location = new System.Drawing.Point(3, 3);
-      this.constrainedItemBaseView.Name = "constrainedItemBaseView";
-      this.constrainedItemBaseView.Size = new System.Drawing.Size(383, 303);
-      this.constrainedItemBaseView.TabIndex = 0;
-      // 
       // descriptionTabPage
       // 
@@ -226,5 +201,4 @@
       this.variableInfosTabPage.ResumeLayout(false);
       this.variablesTabPage.ResumeLayout(false);
-      this.constraintsTabPage.ResumeLayout(false);
       this.descriptionTabPage.ResumeLayout(false);
       this.descriptionTabPage.PerformLayout();
@@ -239,5 +213,4 @@
     private System.Windows.Forms.TabPage variableInfosTabPage;
     private System.Windows.Forms.TabPage variablesTabPage;
-    private System.Windows.Forms.TabPage constraintsTabPage;
     private System.Windows.Forms.TabPage descriptionTabPage;
     private System.Windows.Forms.TextBox descriptionTextBox;
@@ -245,5 +218,4 @@
     private HeuristicLab.Core.Views.OperatorBaseVariableInfosView operatorBaseVariableInfosView;
     private HeuristicLab.Core.Views.OperatorBaseVariablesView operatorBaseVariablesView;
-    private HeuristicLab.Core.Views.ConstrainedItemBaseView constrainedItemBaseView;
     private System.Windows.Forms.Button removeVariableInfoButton;
     private System.Windows.Forms.Button addVariableInfoButton;
Index: trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.cs	(revision 2524)
@@ -55,5 +55,4 @@
       operatorBaseVariableInfosView.Operator = null;
       operatorBaseVariablesView.Operator = null;
-      constrainedItemBaseView.ConstrainedItem = null;
       CombinedOperator.DescriptionChanged -= new EventHandler(CombinedOperator_DescriptionChanged);
       base.RemoveItemEvents();
@@ -69,5 +68,4 @@
       operatorBaseVariableInfosView.Operator = CombinedOperator;
       operatorBaseVariablesView.Operator = CombinedOperator;
-      constrainedItemBaseView.ConstrainedItem = CombinedOperator;
       CombinedOperator.DescriptionChanged += new EventHandler(CombinedOperator_DescriptionChanged);
     }
Index: trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2523)
+++ trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2524)
@@ -139,8 +139,4 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Constraints\3.3\HeuristicLab.Constraints-3.3.csproj">
-      <Project>{19C1E42A-4B48-4EFD-B697-899016F1C198}</Project>
-      <Name>HeuristicLab.Constraints-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
       <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
Index: trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs	(revision 2524)
@@ -31,5 +31,4 @@
   [ClassInfo(Name = "HeuristicLab.Operators-3.3")]
   [PluginFile(Filename = "HeuristicLab.Operators-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.3")]
   [Dependency(Dependency = "HeuristicLab.Core-3.3")]
   [Dependency(Dependency = "HeuristicLab.Core.Views-3.3")]
Index: trunk/sources/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj	(revision 2523)
+++ trunk/sources/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj	(revision 2524)
@@ -96,8 +96,4 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Constraints\3.3\HeuristicLab.Constraints-3.3.csproj">
-      <Project>{19C1E42A-4B48-4EFD-B697-899016F1C198}</Project>
-      <Name>HeuristicLab.Constraints-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
       <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
Index: trunk/sources/HeuristicLab.Random/3.3/NormalRandomAdder.cs
===================================================================
--- trunk/sources/HeuristicLab.Random/3.3/NormalRandomAdder.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Random/3.3/NormalRandomAdder.cs	(revision 2524)
@@ -25,5 +25,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Constraints;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -106,8 +105,4 @@
       if (value is IntData)
         AddNormal((IntData)value, normal);
-      else if (value is ConstrainedIntData)
-        AddNormal((ConstrainedIntData)value, normal);
-      else if (value is ConstrainedDoubleData)
-        AddNormal((ConstrainedDoubleData)value, normal);
       else if (value is DoubleData)
         AddNormal((DoubleData)value, normal);
@@ -125,26 +120,4 @@
 
     /// <summary>
-    /// Generates a new double random number and adds it to the value of the given <paramref name="data"/>
-    /// checking its constraints.
-    /// </summary>
-    /// <exception cref="InvalidProgramException">Thrown when with the current settings no valid value
-    /// could be found.</exception>
-    /// <param name="data">The double object where to add the random number and whose constraints
-    /// to fulfill.</param>
-    /// <param name="normal">The continuous, normally distributed random variable.</param>
-    public void AddNormal(ConstrainedDoubleData data, NormalDistributedRandom normal) {
-      for (int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-        double newValue = data.Data + normal.NextDouble();
-        if (IsIntegerConstrained(data)) {
-          newValue = Math.Round(newValue);
-        }
-        if (data.TrySetData(newValue)) {
-          return;
-        }
-      }
-      throw new InvalidProgramException("Coudn't find a valid value");
-    }
-
-    /// <summary>
     /// Generates a new int random number and adds it to value of the given <paramref name="data"/>.
     /// </summary>
@@ -154,29 +127,4 @@
       data.Data = (int)Math.Round(data.Data + normal.NextDouble());
     }
-
-    /// <summary>
-    /// Generates a new int random number and adds it to the value of the given <paramref name="data"/>
-    /// checking its constraints.
-    /// </summary>
-    /// <exception cref="InvalidProgramException">Thrown when with the current settings no valid value 
-    /// could be found.</exception>
-    /// <param name="data">The int object where to add the generated value and whose contraints to check.</param>
-    /// <param name="normal">The continuous, normally distributed random variable.</param>
-    public void AddNormal(ConstrainedIntData data, NormalDistributedRandom normal) {
-      for (int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-        if (data.TrySetData((int)Math.Round(data.Data + normal.NextDouble())))
-          return;
-      }
-      throw new InvalidProgramException("Couldn't find a valid value.");
-    }
-
-    private bool IsIntegerConstrained(ConstrainedDoubleData data) {
-      foreach (IConstraint constraint in data.Constraints) {
-        if (constraint is IsIntegerConstraint) {
-          return true;
-        }
-      }
-      return false;
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Random/3.3/NormalRandomizer.cs
===================================================================
--- trunk/sources/HeuristicLab.Random/3.3/NormalRandomizer.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Random/3.3/NormalRandomizer.cs	(revision 2524)
@@ -25,5 +25,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Constraints;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -98,52 +97,7 @@
       if (value is IntData)
         RandomizeNormal((IntData)value, n);
-      else if (value is ConstrainedIntData)
-        RandomizeNormal((ConstrainedIntData)value, n);
       else if (value is DoubleData)
         RandomizeNormal((DoubleData)value, n);
-      else if (value is ConstrainedDoubleData)
-        RandomizeNormal((ConstrainedDoubleData)value, n);
       else throw new InvalidOperationException("Can't handle type " + value.GetType().Name);
-    }
-
-    /// <summary>
-    /// Generates a new double random variable based on a continuous, normally distributed random number generator
-    /// <paramref name="normal"/> and checks some contraints.
-    /// </summary>
-    /// <exception cref="InvalidOperationException">Thrown when with the given settings no valid value in
-    /// 100 tries could be found.
-    /// </exception>
-    /// <param name="data">The double object where to assign the new number to and whose constraints
-    /// must be fulfilled.</param>
-    /// <param name="normal">The continuous, normally distributed random variable.</param>
-    public void RandomizeNormal(ConstrainedDoubleData data, NormalDistributedRandom normal) {
-      for (int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-        double r = normal.NextDouble();
-        if (IsIntegerConstrained(data)) {
-          r = Math.Round(r);
-        }
-        if (data.TrySetData(r)) {
-          return;
-        }
-      }
-      throw new InvalidOperationException("Couldn't find a valid value in 100 tries with mu=" + normal.Mu + " sigma=" + normal.Sigma);
-    }
-
-    /// <summary>
-    /// Generates a new int random variable based on a continuous, normally distributed random number 
-    /// generator <paramref name="normal"/> and checks some constraints.
-    /// </summary>
-    /// <exception cref="InvalidOperationException">Thrown when with the given settings no valid
-    /// value could be found.</exception>
-    /// <param name="data">The int object where to assign the new value to and whose constraints must
-    /// be fulfilled.</param>
-    /// <param name="normal">The continuous, normally distributed random variable.</param>
-    public void RandomizeNormal(ConstrainedIntData data, NormalDistributedRandom normal) {
-      for (int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-        double r = normal.NextDouble();
-        if (data.TrySetData((int)Math.Round(r))) // since r is a continuous, normally distributed random variable rounding should be OK
-          return;
-      }
-      throw new InvalidOperationException("Couldn't find a valid value");
     }
 
@@ -167,14 +121,4 @@
       data.Data = (int)Math.Round(normal.NextDouble());
     }
-
-
-    private bool IsIntegerConstrained(ConstrainedDoubleData data) {
-      foreach (IConstraint constraint in data.Constraints) {
-        if (constraint is IsIntegerConstraint) {
-          return true;
-        }
-      }
-      return false;
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Random/3.3/UniformRandomAdder.cs
===================================================================
--- trunk/sources/HeuristicLab.Random/3.3/UniformRandomAdder.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Random/3.3/UniformRandomAdder.cs	(revision 2524)
@@ -25,5 +25,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Constraints;
 
 namespace HeuristicLab.Random {
@@ -91,54 +90,7 @@
       if (value is IntData)
         AddUniform((IntData)value, mt, min, max);
-      else if (value is ConstrainedIntData)
-        AddUniform((ConstrainedIntData)value, mt, min, max);
       else if (value is DoubleData)
         AddUniform((DoubleData)value, mt, min, max);
-      else if (value is ConstrainedDoubleData)
-        AddUniform((ConstrainedDoubleData)value, mt, min, max);
       else throw new InvalidOperationException("Can't handle type " + value.GetType().Name);
-    }
-
-    /// <summary>
-    /// Adds a new double random variable being restricted to some constraints to the value of the given 
-    /// <paramref name="data"/>.
-    /// </summary>
-    /// <exception cref="InvalidProgramException">Thrown when no valid value can be found.</exception>
-    /// <param name="data">The data where to add the new variable and where to assign the new value to.</param>
-    /// <param name="mt">The random number generator.</param>
-    /// <param name="min">The left border of the interval in which the next random number has to lie.</param>
-    /// <param name="max">The right border (exclusive) of the interval in which the next random number
-    /// has to lie.</param>
-    public void AddUniform(ConstrainedDoubleData data, MersenneTwister mt, double min, double max) {
-      for (int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-        double newValue = data.Data + mt.NextDouble() * (max - min) + min;
-        if (IsIntegerConstrained(data)) {
-          newValue = Math.Floor(newValue);
-        }
-        if (data.TrySetData(newValue)) {
-          return;
-        }
-      }
-      throw new InvalidProgramException("Couldn't find a valid value");
-    }
-
-    /// <summary>
-    /// Adds a new int random variable being restricted to some constraints to the value of the given
-    /// <paramref name="data"/>.
-    /// </summary>
-    /// <exception cref="InvalidProgramException">Thrown when no valid value could be found.</exception>
-    /// <param name="data">The data where to add the random value and where to assign the new value to.</param>
-    /// <param name="mt">The random number generator.</param>
-    /// <param name="min">The left border of the interval in which the next random number has to lie.</param>
-    /// <param name="max">The right border (exclusive) of the interval in which the next random number
-    /// has to lie.</param>
-    public void AddUniform(ConstrainedIntData data, MersenneTwister mt, double min, double max) {
-      for (int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-        int newValue = (int)Math.Floor(data.Data + mt.NextDouble() * (max - min) + min);
-        if (data.TrySetData(newValue)) {
-          return;
-        }
-      }
-      throw new InvalidProgramException("Couldn't find a valid value");
     }
 
@@ -168,12 +120,4 @@
       data.Data = (int)Math.Floor(data.Data + mt.NextDouble() * (max - min) + min);
     }
-    private bool IsIntegerConstrained(ConstrainedDoubleData data) {
-      foreach (IConstraint constraint in data.Constraints) {
-        if (constraint is IsIntegerConstraint) {
-          return true;
-        }
-      }
-      return false;
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Random/3.3/UniformRandomizer.cs
===================================================================
--- trunk/sources/HeuristicLab.Random/3.3/UniformRandomizer.cs	(revision 2523)
+++ trunk/sources/HeuristicLab.Random/3.3/UniformRandomizer.cs	(revision 2524)
@@ -25,5 +25,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Constraints;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -105,10 +104,6 @@
       if (value is DoubleData)
         RandomizeUniform((DoubleData)value, mt, min, max);
-      else if (value is ConstrainedDoubleData)
-        RandomizeUniform((ConstrainedDoubleData)value, mt, min, max);
       else if (value is IntData)
         RandomizeUniform((IntData)value, mt, min, max);
-      else if (value is ConstrainedIntData)
-        RandomizeUniform((ConstrainedIntData)value, mt, min, max);
       else throw new ArgumentException("Can't handle type " + value.GetType().Name);
     }
@@ -137,55 +132,4 @@
         data.Data = (int)Math.Floor(mt.NextDouble() * (max - min) + min);
       }
-
-      /// <summary>
-      /// Generates a new double random number, being restricted to some constraints.
-      /// </summary>
-      /// <exception cref="InvalidOperationException">Thrown when no valid value could be found.</exception>
-      /// <param name="data">The double object which the new value is assigned to and whose constraints
-      /// must be fulfilled.</param>
-      /// <param name="mt">The random number generator.</param>
-      /// <param name="min">The left border of the interval in which the next random number has to lie.</param>
-      /// <param name="max">The right border (exclusive) of the interval in which the next random number
-      /// has to lie.</param>
-      public void RandomizeUniform(ConstrainedDoubleData data, MersenneTwister mt, double min, double max) {
-        for(int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-          double r = mt.NextDouble() * (max - min) + min;
-          if(IsIntegerConstrained(data)) {
-            r = Math.Floor(r);
-          }
-          if(data.TrySetData(r)) {
-            return;
-          }
-        }
-        throw new InvalidOperationException("Couldn't find a valid value");
-      }
-      /// <summary>
-      /// Generates a new int random number, being restricted to some constraints.
-      /// </summary>
-      /// <exception cref="InvalidOperationException">Thrown when no valid value could be found.</exception>
-      /// <param name="data">The int object which the new value is assigned to and whose constraints
-      /// must be fulfilled.</param>
-      /// <param name="mt">The random number generator.</param>
-      /// <param name="min">The left border of the interval in which the next random number has to lie.</param>
-      /// <param name="max">The right border (exclusive) of the interval in which the next random number
-      /// has to lie.</param>
-      public void RandomizeUniform(ConstrainedIntData data, MersenneTwister mt, double min, double max) {
-        for(int tries = MAX_NUMBER_OF_TRIES; tries >= 0; tries--) {
-          int r = (int)Math.Floor(mt.NextDouble() * (max - min) + min);
-          if(data.TrySetData(r)) {
-            return;
-          }
-        }
-        throw new InvalidOperationException("Couldn't find a valid value");
-      }
-
-      private bool IsIntegerConstrained(ConstrainedDoubleData data) {
-        foreach(IConstraint constraint in data.Constraints) {
-          if(constraint is IsIntegerConstraint) {
-            return true;
-          }
-        }
-        return false;
-      }
     }
 }
Index: trunk/sources/HeuristicLab.SGA/3.3/HeuristicLab.SGA-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.SGA/3.3/HeuristicLab.SGA-3.3.csproj	(revision 2523)
+++ trunk/sources/HeuristicLab.SGA/3.3/HeuristicLab.SGA-3.3.csproj	(revision 2524)
@@ -99,8 +99,4 @@
       <Name>HeuristicLab.Common-3.2</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Constraints\3.3\HeuristicLab.Constraints-3.3.csproj">
-      <Project>{19C1E42A-4B48-4EFD-B697-899016F1C198}</Project>
-      <Name>HeuristicLab.Constraints-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
       <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
