Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBExperiment.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBExperiment.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBExperiment.cs	(revision 4558)
@@ -43,7 +43,14 @@
     }
 
-    [Storable]
-    private long AlgorithmId { get; set; }
-    [Storable]
+    private long algorithmId;
+    public long AlgorithmId {
+      get { return algorithmId; }
+      private set {
+        if (algorithmId != value) {
+          algorithmId = value;
+          OnAlgorithmIdChanged();
+        }
+      }
+    }
     private IAlgorithm algorithm;
     private IAlgorithm Algorithm {
@@ -53,18 +60,29 @@
         algorithm = value;
         RegisterAlgorithmEvents();
-        if (algorithm != null) algorithm.Problem = Problem;
-        OnChanged();
-      }
-    }
-    [Storable]
-    private long ProblemId { get; set; }
-    [Storable]
+        if ((algorithm != null) && (problem != null)) {
+          algorithm.Problem = problem;
+          algorithm.Prepare(true);
+        }
+      }
+    }
+    private long problemId;
+    public long ProblemId {
+      get { return problemId; }
+      private set {
+        if (problemId != value) {
+          problemId = value;
+          OnProblemIdChanged();
+        }
+      }
+    }
     private IProblem problem;
-    public IProblem Problem {
+    private IProblem Problem {
       get { return problem; }
-      private set {
+      set {
         problem = value;
-        if (Algorithm != null) Algorithm.Problem = problem;
-        OnChanged();
+        if ((algorithm != null) && (problem != null)) {
+          algorithm.Problem = problem;
+          algorithm.Prepare(true);
+        }
       }
     }
@@ -72,5 +90,5 @@
     public ExecutionState ExecutionState {
       get {
-        if (Algorithm != null) return Algorithm.ExecutionState;
+        if ((Algorithm != null) && (Problem != null)) return Algorithm.ExecutionState;
         else return ExecutionState.Stopped;
       }
@@ -82,5 +100,5 @@
       }
     }
-    public IKeyedItemCollection<string, IParameter> Parameters {
+    public IKeyedItemCollection<string, IParameter> AlgorithmParameters {
       get {
         if (Algorithm != null) return Algorithm.Parameters;
@@ -88,4 +106,10 @@
       }
     }
+    public IKeyedItemCollection<string, IParameter> ProblemParameters {
+      get {
+        if (Problem != null) return Problem.Parameters;
+        else return null;
+      }
+    }
     public ResultCollection Results {
       get {
@@ -100,4 +124,27 @@
       }
     }
+
+    #region Persistence Properties
+    [Storable(Name = "AlgorithmId")]
+    private long AlgorithmIdPersistence {
+      get { return algorithmId; }
+      set { algorithmId = value; }
+    }
+    [Storable(Name = "Algorithm")]
+    private IAlgorithm AlgorithmPersistence {
+      get { return Algorithm; }
+      set { Algorithm = value; }
+    }
+    [Storable(Name = "ProblemId")]
+    private long ProblemIdPersistence {
+      get { return problemId; }
+      set { problemId = value; }
+    }
+    [Storable(Name = "Problem")]
+    private IProblem ProblemPersistence {
+      get { return Problem; }
+      set { Problem = value; }
+    }
+    #endregion
 
     public OKBExperiment()
@@ -107,6 +154,8 @@
     }
     [StorableConstructor]
-    private OKBExperiment(bool deserializing)
-      : base(deserializing) {
+    private OKBExperiment(bool deserializing) : base(deserializing) { }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void Initialize() {
       RegisterAlgorithmEvents();
     }
@@ -114,12 +163,20 @@
     public void Load(Algorithm algorithm) {
       if (algorithm == null) {
+        Algorithm = null;
         AlgorithmId = 0;
-        Algorithm = null;
       } else {
-        AlgorithmId = algorithm.Id;
-        AlgorithmData algorithmData = OKBClient.Instance.GetAlgorithmData(algorithm.Id);
-
-        using (MemoryStream stream = new MemoryStream(algorithmData.Data)) {
-          Algorithm = XmlParser.Deserialize<IAlgorithm>(stream);
+        try {
+          if (AlgorithmId != algorithm.Id) {
+            AlgorithmData algorithmData = OKBClient.Instance.GetAlgorithmData(algorithm.Id);
+            using (MemoryStream stream = new MemoryStream(algorithmData.Data)) {
+              Algorithm = XmlParser.Deserialize<IAlgorithm>(stream);
+            }
+          }
+          AlgorithmId = algorithm.Id;
+        }
+        catch (Exception ex) {
+          Algorithm = null;
+          AlgorithmId = 0;
+          OnExceptionOccurred(ex);
         }
       }
@@ -127,12 +184,20 @@
     public void Load(Problem problem) {
       if (problem == null) {
+        Problem = null;
         ProblemId = 0;
-        Problem = null;
       } else {
-        ProblemId = problem.Id;
-        ProblemData problemData = OKBClient.Instance.GetProblemData(problem.Id);
-
-        using (MemoryStream stream = new MemoryStream(problemData.Data)) {
-          Problem = XmlParser.Deserialize<IProblem>(stream);
+        try {
+          if (ProblemId != problem.Id) {
+            ProblemData problemData = OKBClient.Instance.GetProblemData(problem.Id);
+            using (MemoryStream stream = new MemoryStream(problemData.Data)) {
+              Problem = XmlParser.Deserialize<IProblem>(stream);
+            }
+          }
+          ProblemId = problem.Id;
+        }
+        catch (Exception ex) {
+          Problem = null;
+          ProblemId = 0;
+          OnExceptionOccurred(ex);
         }
       }
@@ -156,7 +221,12 @@
 
     #region Events
-    public event EventHandler Changed;
-    private void OnChanged() {
-      EventHandler handler = Changed;
+    public event EventHandler AlgorithmIdChanged;
+    private void OnAlgorithmIdChanged() {
+      EventHandler handler = AlgorithmIdChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler ProblemIdChanged;
+    private void OnProblemIdChanged() {
+      EventHandler handler = ProblemIdChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
@@ -199,48 +269,48 @@
     private void RegisterAlgorithmEvents() {
       if (Algorithm != null) {
-        Algorithm.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Algorithm_ExceptionOccurred);
-        Algorithm.ExecutionStateChanged += new EventHandler(Algorithm_ExecutionStateChanged);
-        Algorithm.ExecutionTimeChanged += new EventHandler(Algorithm_ExecutionTimeChanged);
-        Algorithm.ItemImageChanged += new EventHandler(Algorithm_ItemImageChanged);
-        Algorithm.Paused += new EventHandler(Algorithm_Paused);
-        Algorithm.Prepared += new EventHandler(Algorithm_Prepared);
-        Algorithm.Started += new EventHandler(Algorithm_Started);
-        Algorithm.Stopped += new EventHandler(Algorithm_Stopped);
+        Algorithm.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(algorithm_ExceptionOccurred);
+        Algorithm.ExecutionStateChanged += new EventHandler(algorithm_ExecutionStateChanged);
+        Algorithm.ExecutionTimeChanged += new EventHandler(algorithm_ExecutionTimeChanged);
+        Algorithm.ItemImageChanged += new EventHandler(algorithm_ItemImageChanged);
+        Algorithm.Paused += new EventHandler(algorithm_Paused);
+        Algorithm.Prepared += new EventHandler(algorithm_Prepared);
+        Algorithm.Started += new EventHandler(algorithm_Started);
+        Algorithm.Stopped += new EventHandler(algorithm_Stopped);
       }
     }
     private void DeregisterAlgorithmEvents() {
       if (Algorithm != null) {
-        Algorithm.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Algorithm_ExceptionOccurred);
-        Algorithm.ExecutionStateChanged -= new EventHandler(Algorithm_ExecutionStateChanged);
-        Algorithm.ExecutionTimeChanged -= new EventHandler(Algorithm_ExecutionTimeChanged);
-        Algorithm.ItemImageChanged -= new EventHandler(Algorithm_ItemImageChanged);
-        Algorithm.Paused -= new EventHandler(Algorithm_Paused);
-        Algorithm.Prepared -= new EventHandler(Algorithm_Prepared);
-        Algorithm.Started -= new EventHandler(Algorithm_Started);
-        Algorithm.Stopped -= new EventHandler(Algorithm_Stopped);
-      }
-    }
-    private void Algorithm_ExceptionOccurred(object sender, EventArgs<Exception> e) {
+        Algorithm.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(algorithm_ExceptionOccurred);
+        Algorithm.ExecutionStateChanged -= new EventHandler(algorithm_ExecutionStateChanged);
+        Algorithm.ExecutionTimeChanged -= new EventHandler(algorithm_ExecutionTimeChanged);
+        Algorithm.ItemImageChanged -= new EventHandler(algorithm_ItemImageChanged);
+        Algorithm.Paused -= new EventHandler(algorithm_Paused);
+        Algorithm.Prepared -= new EventHandler(algorithm_Prepared);
+        Algorithm.Started -= new EventHandler(algorithm_Started);
+        Algorithm.Stopped -= new EventHandler(algorithm_Stopped);
+      }
+    }
+    private void algorithm_ExceptionOccurred(object sender, EventArgs<Exception> e) {
       OnExceptionOccurred(e.Value);
     }
-    private void Algorithm_ExecutionStateChanged(object sender, EventArgs e) {
+    private void algorithm_ExecutionStateChanged(object sender, EventArgs e) {
       OnExecutionStateChanged();
     }
-    private void Algorithm_ExecutionTimeChanged(object sender, EventArgs e) {
+    private void algorithm_ExecutionTimeChanged(object sender, EventArgs e) {
       OnExecutionTimeChanged();
     }
-    private void Algorithm_ItemImageChanged(object sender, EventArgs e) {
+    private void algorithm_ItemImageChanged(object sender, EventArgs e) {
       OnItemImageChanged();
     }
-    private void Algorithm_Paused(object sender, EventArgs e) {
+    private void algorithm_Paused(object sender, EventArgs e) {
       OnPaused();
     }
-    private void Algorithm_Prepared(object sender, EventArgs e) {
+    private void algorithm_Prepared(object sender, EventArgs e) {
       OnPrepared();
     }
-    private void Algorithm_Started(object sender, EventArgs e) {
+    private void algorithm_Started(object sender, EventArgs e) {
       OnStarted();
     }
-    private void Algorithm_Stopped(object sender, EventArgs e) {
+    private void algorithm_Stopped(object sender, EventArgs e) {
       OnStopped();
     }
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmDataView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmDataView.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmDataView.cs	(revision 4558)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Collections.Generic;
 using System.ComponentModel;
 using System.IO;
@@ -37,4 +38,6 @@
   [Content(typeof(AlgorithmData), true)]
   public partial class AlgorithmDataView : AsynchronousContentView {
+    private List<DataType> dataTypeComboBoxValues;
+
     private long algorithmId;
     public long AlgorithmId {
@@ -60,5 +63,6 @@
     protected override void OnInitialized(System.EventArgs e) {
       base.OnInitialized(e);
-      dataTypeComboBox.DataSource = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
       dataTypeComboBox.SelectedIndex = -1;
     }
@@ -80,5 +84,5 @@
         noViewAvailableLabel.Visible = false;
       } else {
-        dataTypeComboBox.SelectedItem = OKBClient.Instance.DataTypes.FirstOrDefault(d => d.Id == Content.DataTypeId);
+        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
 
         using (MemoryStream stream = new MemoryStream(Content.Data)) {
@@ -111,5 +115,5 @@
       switch (e.PropertyName) {
         case "DataTypeId":
-          dataTypeComboBox.SelectedItem = OKBClient.Instance.DataTypes.FirstOrDefault(d => d.Id == Content.DataTypeId);
+          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
           break;
       }
@@ -159,5 +163,6 @@
               dataType.Store();
               OKBClient.Instance.DataTypes.Add(dataType);
-              dataTypeComboBox.DataSource = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBox.DataSource = dataTypeComboBoxValues;
             }
             dataTypeComboBox.SelectedItem = dataType;
@@ -191,5 +196,6 @@
               dataType.Store();
               OKBClient.Instance.DataTypes.Add(dataType);
-              dataTypeComboBox.DataSource = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBox.DataSource = dataTypeComboBoxValues;
             }
             dataTypeComboBox.SelectedItem = dataType;
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/AlgorithmView.cs	(revision 4558)
@@ -31,4 +31,7 @@
   [Content(typeof(Algorithm), true)]
   public partial class AlgorithmView : NamedOKBItemView {
+    private List<Platform> platformComboBoxValues;
+    private List<AlgorithmClass> algorithmClassComboBoxValues;
+
     public new Algorithm Content {
       get { return (Algorithm)base.Content; }
@@ -42,6 +45,8 @@
     protected override void OnInitialized(System.EventArgs e) {
       base.OnInitialized(e);
-      platformComboBox.DataSource = OKBClient.Instance.Platforms.ToList();
-      algorithmClassComboBox.DataSource = OKBClient.Instance.AlgorithmClasses.ToList();
+      platformComboBoxValues = OKBClient.Instance.Platforms.ToList();
+      platformComboBox.DataSource = platformComboBoxValues;
+      algorithmClassComboBoxValues = OKBClient.Instance.AlgorithmClasses.ToList();
+      algorithmClassComboBox.DataSource = algorithmClassComboBoxValues;
     }
 
@@ -53,6 +58,6 @@
         algorithmDataView.AlgorithmId = 0;
       } else {
-        platformComboBox.SelectedItem = OKBClient.Instance.Platforms.FirstOrDefault(p => p.Id == Content.PlatformId);
-        algorithmClassComboBox.SelectedItem = OKBClient.Instance.AlgorithmClasses.FirstOrDefault(a => a.Id == Content.AlgorithmClassId);
+        platformComboBox.SelectedItem = platformComboBoxValues.FirstOrDefault(p => p.Id == Content.PlatformId);
+        algorithmClassComboBox.SelectedItem = algorithmClassComboBoxValues.FirstOrDefault(a => a.Id == Content.AlgorithmClassId);
         algorithmDataView.AlgorithmId = Content.Id;
       }
@@ -77,8 +82,8 @@
           break;
         case "PlatformId":
-          platformComboBox.SelectedItem = OKBClient.Instance.Platforms.FirstOrDefault(p => p.Id == Content.PlatformId);
+          platformComboBox.SelectedItem = platformComboBoxValues.FirstOrDefault(p => p.Id == Content.PlatformId);
           break;
         case "AlgorithmClassId":
-          algorithmClassComboBox.SelectedItem = OKBClient.Instance.AlgorithmClasses.FirstOrDefault(a => a.Id == Content.AlgorithmClassId);
+          algorithmClassComboBox.SelectedItem = algorithmClassComboBoxValues.FirstOrDefault(a => a.Id == Content.AlgorithmClassId);
           break;
       }
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/DataTypeView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/DataTypeView.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/DataTypeView.cs	(revision 4558)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Collections.Generic;
 using System.Linq;
 using System.Windows.Forms;
@@ -30,4 +31,6 @@
   [Content(typeof(DataType), true)]
   public partial class DataTypeView : OKBItemView {
+    private List<Platform> platformComboBoxValues;
+
     public new DataType Content {
       get { return (DataType)base.Content; }
@@ -41,5 +44,6 @@
     protected override void OnInitialized(System.EventArgs e) {
       base.OnInitialized(e);
-      platformComboBox.DataSource = OKBClient.Instance.Platforms.ToList();
+      platformComboBoxValues = OKBClient.Instance.Platforms.ToList();
+      platformComboBox.DataSource = platformComboBoxValues;
     }
 
@@ -57,5 +61,5 @@
         nameTextBox.Text = Content.Name;
         sqlNameComboBox.Text = Content.SqlName;
-        platformComboBox.SelectedItem = OKBClient.Instance.Platforms.FirstOrDefault(p => p.Id == Content.PlatformId);
+        platformComboBox.SelectedItem = platformComboBoxValues.FirstOrDefault(p => p.Id == Content.PlatformId);
         Caption = Content.Name;
       }
@@ -80,5 +84,5 @@
           break;
         case "PlatformId":
-          platformComboBox.SelectedItem = OKBClient.Instance.Platforms.FirstOrDefault(p => p.Id == Content.PlatformId);
+          platformComboBox.SelectedItem = platformComboBoxValues.FirstOrDefault(p => p.Id == Content.PlatformId);
           break;
       }
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/OKBExperimentView.Designer.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/OKBExperimentView.Designer.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/OKBExperimentView.Designer.cs	(revision 4558)
@@ -57,16 +57,16 @@
       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
       this.tabControl = new System.Windows.Forms.TabControl();
-      this.problemTabPage = new System.Windows.Forms.TabPage();
-      this.parametersTabPage = new System.Windows.Forms.TabPage();
+      this.problemParametersTabPage = new System.Windows.Forms.TabPage();
+      this.algorithmParametersTabPage = new System.Windows.Forms.TabPage();
       this.resultsTabPage = new System.Windows.Forms.TabPage();
       this.runsTabPage = new System.Windows.Forms.TabPage();
-      this.problemViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.parametersViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.problemParametersViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.algorithmParametersViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.resultsViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.runsViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.tabControl.SuspendLayout();
-      this.problemTabPage.SuspendLayout();
-      this.parametersTabPage.SuspendLayout();
+      this.problemParametersTabPage.SuspendLayout();
+      this.algorithmParametersTabPage.SuspendLayout();
       this.resultsTabPage.SuspendLayout();
       this.runsTabPage.SuspendLayout();
@@ -203,6 +203,6 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.tabControl.Controls.Add(this.problemTabPage);
-      this.tabControl.Controls.Add(this.parametersTabPage);
+      this.tabControl.Controls.Add(this.problemParametersTabPage);
+      this.tabControl.Controls.Add(this.algorithmParametersTabPage);
       this.tabControl.Controls.Add(this.resultsTabPage);
       this.tabControl.Controls.Add(this.runsTabPage);
@@ -213,25 +213,25 @@
       this.tabControl.TabIndex = 9;
       // 
-      // problemTabPage
-      // 
-      this.problemTabPage.Controls.Add(this.problemViewHost);
-      this.problemTabPage.Location = new System.Drawing.Point(4, 22);
-      this.problemTabPage.Name = "problemTabPage";
-      this.problemTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.problemTabPage.Size = new System.Drawing.Size(702, 282);
-      this.problemTabPage.TabIndex = 0;
-      this.problemTabPage.Text = "Problem";
-      this.problemTabPage.UseVisualStyleBackColor = true;
-      // 
-      // parametersTabPage
-      // 
-      this.parametersTabPage.Controls.Add(this.parametersViewHost);
-      this.parametersTabPage.Location = new System.Drawing.Point(4, 22);
-      this.parametersTabPage.Name = "parametersTabPage";
-      this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.parametersTabPage.Size = new System.Drawing.Size(702, 282);
-      this.parametersTabPage.TabIndex = 1;
-      this.parametersTabPage.Text = "Parameters";
-      this.parametersTabPage.UseVisualStyleBackColor = true;
+      // problemParametersTabPage
+      // 
+      this.problemParametersTabPage.Controls.Add(this.problemParametersViewHost);
+      this.problemParametersTabPage.Location = new System.Drawing.Point(4, 22);
+      this.problemParametersTabPage.Name = "problemParametersTabPage";
+      this.problemParametersTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.problemParametersTabPage.Size = new System.Drawing.Size(702, 282);
+      this.problemParametersTabPage.TabIndex = 0;
+      this.problemParametersTabPage.Text = "Problem Parameters";
+      this.problemParametersTabPage.UseVisualStyleBackColor = true;
+      // 
+      // algorithmParametersTabPage
+      // 
+      this.algorithmParametersTabPage.Controls.Add(this.algorithmParametersViewHost);
+      this.algorithmParametersTabPage.Location = new System.Drawing.Point(4, 22);
+      this.algorithmParametersTabPage.Name = "algorithmParametersTabPage";
+      this.algorithmParametersTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.algorithmParametersTabPage.Size = new System.Drawing.Size(702, 282);
+      this.algorithmParametersTabPage.TabIndex = 1;
+      this.algorithmParametersTabPage.Text = "Algorithm Parameters";
+      this.algorithmParametersTabPage.UseVisualStyleBackColor = true;
       // 
       // resultsTabPage
@@ -255,31 +255,31 @@
       this.runsTabPage.UseVisualStyleBackColor = true;
       // 
-      // problemViewHost
-      // 
-      this.problemViewHost.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.problemViewHost.Caption = "View";
-      this.problemViewHost.Content = null;
-      this.problemViewHost.Location = new System.Drawing.Point(6, 6);
-      this.problemViewHost.Name = "problemViewHost";
-      this.problemViewHost.ReadOnly = false;
-      this.problemViewHost.Size = new System.Drawing.Size(690, 270);
-      this.problemViewHost.TabIndex = 0;
-      this.problemViewHost.ViewType = null;
-      // 
-      // parametersViewHost
-      // 
-      this.parametersViewHost.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.parametersViewHost.Caption = "View";
-      this.parametersViewHost.Content = null;
-      this.parametersViewHost.Location = new System.Drawing.Point(6, 6);
-      this.parametersViewHost.Name = "parametersViewHost";
-      this.parametersViewHost.ReadOnly = false;
-      this.parametersViewHost.Size = new System.Drawing.Size(690, 270);
-      this.parametersViewHost.TabIndex = 1;
-      this.parametersViewHost.ViewType = null;
+      // problemParametersViewHost
+      // 
+      this.problemParametersViewHost.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.problemParametersViewHost.Caption = "View";
+      this.problemParametersViewHost.Content = null;
+      this.problemParametersViewHost.Location = new System.Drawing.Point(6, 6);
+      this.problemParametersViewHost.Name = "problemParametersViewHost";
+      this.problemParametersViewHost.ReadOnly = false;
+      this.problemParametersViewHost.Size = new System.Drawing.Size(690, 270);
+      this.problemParametersViewHost.TabIndex = 0;
+      this.problemParametersViewHost.ViewType = null;
+      // 
+      // algorithmParametersViewHost
+      // 
+      this.algorithmParametersViewHost.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.algorithmParametersViewHost.Caption = "View";
+      this.algorithmParametersViewHost.Content = null;
+      this.algorithmParametersViewHost.Location = new System.Drawing.Point(6, 6);
+      this.algorithmParametersViewHost.Name = "algorithmParametersViewHost";
+      this.algorithmParametersViewHost.ReadOnly = false;
+      this.algorithmParametersViewHost.Size = new System.Drawing.Size(690, 270);
+      this.algorithmParametersViewHost.TabIndex = 1;
+      this.algorithmParametersViewHost.ViewType = null;
       // 
       // resultsViewHost
@@ -347,6 +347,6 @@
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.tabControl.ResumeLayout(false);
-      this.problemTabPage.ResumeLayout(false);
-      this.parametersTabPage.ResumeLayout(false);
+      this.problemParametersTabPage.ResumeLayout(false);
+      this.algorithmParametersTabPage.ResumeLayout(false);
       this.resultsTabPage.ResumeLayout(false);
       this.runsTabPage.ResumeLayout(false);
@@ -370,8 +370,8 @@
     private System.Windows.Forms.TextBox executionTimeTextBox;
     private System.Windows.Forms.TabControl tabControl;
-    private System.Windows.Forms.TabPage problemTabPage;
-    private System.Windows.Forms.TabPage parametersTabPage;
-    private MainForm.WindowsForms.ViewHost problemViewHost;
-    private MainForm.WindowsForms.ViewHost parametersViewHost;
+    private System.Windows.Forms.TabPage problemParametersTabPage;
+    private System.Windows.Forms.TabPage algorithmParametersTabPage;
+    private MainForm.WindowsForms.ViewHost problemParametersViewHost;
+    private MainForm.WindowsForms.ViewHost algorithmParametersViewHost;
     private System.Windows.Forms.TabPage resultsTabPage;
     private MainForm.WindowsForms.ViewHost resultsViewHost;
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/OKBExperimentView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/OKBExperimentView.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/OKBExperimentView.cs	(revision 4558)
@@ -47,9 +47,11 @@
       OKBClient.Instance.Refreshing += new EventHandler(OKBClient_Refreshing);
       OKBClient.Instance.Refreshed += new EventHandler(OKBClient_Refreshed);
+      // TODO: do not forget to deregister events
       PopulateComboBoxes();
     }
 
     protected override void DeregisterContentEvents() {
-      Content.Changed -= new EventHandler(Content_Changed);
+      Content.AlgorithmIdChanged -= new EventHandler(Content_AlgorithmIdChanged);
+      Content.ProblemIdChanged -= new EventHandler(Content_ProblemIdChanged);
       Content.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
       Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
@@ -63,5 +65,6 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.Changed += new EventHandler(Content_Changed);
+      Content.AlgorithmIdChanged += new EventHandler(Content_AlgorithmIdChanged);
+      Content.ProblemIdChanged += new EventHandler(Content_ProblemIdChanged);
       Content.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
       Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
@@ -76,12 +79,16 @@
       base.OnContentChanged();
       if (Content == null) {
-        problemViewHost.Content = null;
-        parametersViewHost.Content = null;
+        algorithmComboBox.SelectedIndex = -1;
+        problemComboBox.SelectedIndex = -1;
+        problemParametersViewHost.Content = null;
+        algorithmParametersViewHost.Content = null;
         resultsViewHost.Content = null;
         runsViewHost.Content = null;
         executionTimeTextBox.Text = "-";
       } else {
-        problemViewHost.Content = Content.Problem;
-        parametersViewHost.Content = Content.Parameters;
+        algorithmComboBox.SelectedItem = OKBClient.Instance.Algorithms.FirstOrDefault(x => x.Id == Content.AlgorithmId);
+        problemComboBox.SelectedItem = OKBClient.Instance.Problems.FirstOrDefault(x => x.Id == Content.ProblemId);
+        problemParametersViewHost.Content = Content.ProblemParameters;
+        algorithmParametersViewHost.Content = Content.AlgorithmParameters;
         resultsViewHost.Content = Content.Results;
         runsViewHost.Content = Content.Runs;
@@ -99,12 +106,12 @@
 
     private void PopulateComboBoxes() {
+      algorithmComboBox.DataSource = null;
+      problemComboBox.DataSource = null;
       Platform platform = OKBClient.Instance.Platforms.FirstOrDefault(x => x.Name == "HeuristicLab 3.3");
       if (platform != null) {
         algorithmComboBox.DataSource = OKBClient.Instance.Algorithms.Where(x => x.PlatformId == platform.Id).ToList();
         algorithmComboBox.DisplayMember = "Name";
-        algorithmComboBox.SelectedIndex = -1;
         problemComboBox.DataSource = OKBClient.Instance.Problems.Where(x => x.PlatformId == platform.Id).ToList();
         problemComboBox.DisplayMember = "Name";
-        problemComboBox.SelectedIndex = -1;
       }
     }
@@ -120,5 +127,5 @@
       } else {
         Cursor = Cursors.AppStarting;
-        Enabled = false;
+        algorithmComboBox.Enabled = problemComboBox.Enabled = tabControl.Enabled = prepareButton.Enabled = startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = executionTimeTextBox.Enabled = false;
       }
     }
@@ -128,5 +135,5 @@
       } else {
         PopulateComboBoxes();
-        Enabled = true;
+        SetEnabledStateOfControls();
         Cursor = Cursors.Default;
       }
@@ -134,7 +141,24 @@
 
     #region Content Events
-    private void Content_Changed(object sender, EventArgs e) {
-      OnContentChanged();
-      SetEnabledStateOfControls();
+    private void Content_AlgorithmIdChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_AlgorithmIdChanged), sender, e);
+      else {
+        algorithmComboBox.SelectedItem = OKBClient.Instance.Algorithms.FirstOrDefault(x => x.Id == Content.AlgorithmId);
+        algorithmParametersViewHost.Content = Content.AlgorithmParameters;
+        resultsViewHost.Content = Content.Results;
+        runsViewHost.Content = Content.Runs;
+        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_ProblemIdChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ProblemIdChanged), sender, e);
+      else {
+        problemComboBox.SelectedItem = OKBClient.Instance.Problems.FirstOrDefault(x => x.Id == Content.ProblemId);
+        problemParametersViewHost.Content = Content.ProblemParameters;
+        SetEnabledStateOfExecutableButtons();
+      }
     }
     private void Content_ExceptionOccurred(object sender, EventArgs<Exception> e) {
@@ -219,5 +243,5 @@
     #region Helpers
     private void SetEnabledStateOfExecutableButtons() {
-      if (Content == null) {
+      if ((Content == null) || (Content.AlgorithmId == 0) || (Content.ProblemId == 0)) {
         startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = prepareButton.Enabled = false;
       } else {
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemDataView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemDataView.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemDataView.cs	(revision 4558)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Collections.Generic;
 using System.ComponentModel;
 using System.IO;
@@ -37,4 +38,6 @@
   [Content(typeof(ProblemData), true)]
   public partial class ProblemDataView : AsynchronousContentView {
+    private List<DataType> dataTypeComboBoxValues;
+
     private long problemId;
     public long ProblemId {
@@ -60,5 +63,6 @@
     protected override void OnInitialized(System.EventArgs e) {
       base.OnInitialized(e);
-      dataTypeComboBox.DataSource = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBoxValues = OKBClient.Instance.DataTypes.ToList();
+      dataTypeComboBox.DataSource = dataTypeComboBoxValues;
       dataTypeComboBox.SelectedIndex = -1;
     }
@@ -80,5 +84,5 @@
         noViewAvailableLabel.Visible = false;
       } else {
-        dataTypeComboBox.SelectedItem = OKBClient.Instance.DataTypes.FirstOrDefault(d => d.Id == Content.DataTypeId);
+        dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
 
         using (MemoryStream stream = new MemoryStream(Content.Data)) {
@@ -111,5 +115,5 @@
       switch (e.PropertyName) {
         case "DataTypeId":
-          dataTypeComboBox.SelectedItem = OKBClient.Instance.DataTypes.FirstOrDefault(d => d.Id == Content.DataTypeId);
+          dataTypeComboBox.SelectedItem = dataTypeComboBoxValues.FirstOrDefault(d => d.Id == Content.DataTypeId);
           break;
       }
@@ -158,5 +162,6 @@
               dataType.Store();
               OKBClient.Instance.DataTypes.Add(dataType);
-              dataTypeComboBox.DataSource = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBox.DataSource = dataTypeComboBoxValues;
             }
             dataTypeComboBox.SelectedItem = dataType;
@@ -190,5 +195,6 @@
               dataType.Store();
               OKBClient.Instance.DataTypes.Add(dataType);
-              dataTypeComboBox.DataSource = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBoxValues = OKBClient.Instance.DataTypes.OrderBy(d => d.Name).ToList();
+              dataTypeComboBox.DataSource = dataTypeComboBoxValues;
             }
             dataTypeComboBox.SelectedItem = dataType;
Index: branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemView.cs
===================================================================
--- branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemView.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/ProblemView.cs	(revision 4558)
@@ -31,4 +31,7 @@
   [Content(typeof(Problem), true)]
   public partial class ProblemView : NamedOKBItemView {
+    private List<Platform> platformComboBoxValues;
+    private List<ProblemClass> problemClassComboBoxValues;
+
     public new Problem Content {
       get { return (Problem)base.Content; }
@@ -42,6 +45,8 @@
     protected override void OnInitialized(System.EventArgs e) {
       base.OnInitialized(e);
-      platformComboBox.DataSource = OKBClient.Instance.Platforms.ToList();
-      problemClassComboBox.DataSource = OKBClient.Instance.ProblemClasses.ToList();
+      platformComboBoxValues = OKBClient.Instance.Platforms.ToList();
+      platformComboBox.DataSource = platformComboBoxValues;
+      problemClassComboBoxValues = OKBClient.Instance.ProblemClasses.ToList();
+      problemClassComboBox.DataSource = problemClassComboBoxValues;
     }
 
@@ -53,6 +58,6 @@
         problemDataView.ProblemId = 0;
       } else {
-        platformComboBox.SelectedItem = OKBClient.Instance.Platforms.FirstOrDefault(p => p.Id == Content.PlatformId);
-        problemClassComboBox.SelectedItem = OKBClient.Instance.ProblemClasses.FirstOrDefault(a => a.Id == Content.ProblemClassId);
+        platformComboBox.SelectedItem = platformComboBoxValues.FirstOrDefault(p => p.Id == Content.PlatformId);
+        problemClassComboBox.SelectedItem = problemClassComboBoxValues.FirstOrDefault(a => a.Id == Content.ProblemClassId);
         problemDataView.ProblemId = Content.Id;
       }
@@ -77,8 +82,8 @@
           break;
         case "PlatformId":
-          platformComboBox.SelectedItem = OKBClient.Instance.Platforms.FirstOrDefault(p => p.Id == Content.PlatformId);
+          platformComboBox.SelectedItem = platformComboBoxValues.FirstOrDefault(p => p.Id == Content.PlatformId);
           break;
         case "ProblemClassId":
-          problemClassComboBox.SelectedItem = OKBClient.Instance.ProblemClasses.FirstOrDefault(a => a.Id == Content.ProblemClassId);
+          problemClassComboBox.SelectedItem = problemClassComboBoxValues.FirstOrDefault(a => a.Id == Content.ProblemClassId);
           break;
       }
Index: branches/OKB/HeuristicLab.OKB.sln
===================================================================
--- branches/OKB/HeuristicLab.OKB.sln	(revision 4553)
+++ branches/OKB/HeuristicLab.OKB.sln	(revision 4558)
@@ -2,24 +2,4 @@
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.ParameterTable-3.3", "HeuristicLab.OKB.ParameterTable\HeuristicLab.OKB.ParameterTable-3.3.csproj", "{009C72FD-CE2D-4027-87A2-4151B03D2E8F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.MainForm.WPF-3.3", "HeuristicLab.MainForm.WPF\HeuristicLab.MainForm.WPF-3.3.csproj", "{1DBC4D60-0064-4A53-B48C-63D144A67B07}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.Cockpit-3.3", "HeuristicLab.OKB.Cockpit\HeuristicLab.OKB.Cockpit-3.3.csproj", "{52567721-66A9-4411-9ED6-48DE37732868}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.AvalonDock-1.2.2691.0", "HeuristicLab.AvalonDock\HeuristicLab.AvalonDock-1.2.2691.0.csproj", "{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.Cockpit.Admin-3.3", "HeuristicLab.OKB.Cockpit.Admin\HeuristicLab.OKB.Cockpit.Admin-3.3.csproj", "{9AADAE96-361F-48F0-B9B0-31B7DACD0492}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.Cockpit.Query-3.3", "HeuristicLab.OKB.Cockpit.Query\HeuristicLab.OKB.Cockpit.Query-3.3.csproj", "{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.Client-3.3", "HeuristicLab.OKB.Client\HeuristicLab.OKB.Client-3.3.csproj", "{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.BackgroundProcessing-3.3", "HeuristicLab.BackgroundProcessing\HeuristicLab.BackgroundProcessing-3.3.csproj", "{589BECAE-69B0-4EB1-8C06-C073531762B7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.AlgorithmHost-3.3", "HeuristicLab.OKB.AlgorithmHost\HeuristicLab.OKB.AlgorithmHost-3.3.csproj", "{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OKB.Cockpit.Admin.ItemEditor-3.3", "HeuristicLab.OKB.Cockpit.Admin.ItemEditor\HeuristicLab.OKB.Cockpit.Admin.ItemEditor-3.3.csproj", "{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}"
-EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9E843318-7235-4B2B-81A7-160FDDADD9E1}"
 	ProjectSection(SolutionItems) = preProject
@@ -32,6 +12,4 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.OKB.DataAccess-3.3", "HeuristicLab.Services.OKB.DataAccess\3.3\HeuristicLab.Services.OKB.DataAccess-3.3.csproj", "{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.OKB.AttributeSelection-3.3", "HeuristicLab.Services.OKB.AttributeSelection\3.3\HeuristicLab.Services.OKB.AttributeSelection-3.3.csproj", "{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.OKB-3.3", "HeuristicLab.Services.OKB\3.3\HeuristicLab.Services.OKB-3.3.csproj", "{766DA4B7-2A0E-4CDE-8F90-93D8B1AD62CF}"
@@ -49,124 +27,4 @@
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Debug|x64.ActiveCfg = Debug|x64
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Debug|x64.Build.0 = Debug|x64
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Debug|x86.ActiveCfg = Debug|x86
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Debug|x86.Build.0 = Debug|x86
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Release|x64.ActiveCfg = Release|x64
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Release|x64.Build.0 = Release|x64
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Release|x86.ActiveCfg = Release|x86
-		{009C72FD-CE2D-4027-87A2-4151B03D2E8F}.Release|x86.Build.0 = Release|x86
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Debug|x64.ActiveCfg = Debug|x64
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Debug|x64.Build.0 = Debug|x64
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Debug|x86.ActiveCfg = Debug|x86
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Debug|x86.Build.0 = Debug|x86
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Release|Any CPU.Build.0 = Release|Any CPU
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Release|x64.ActiveCfg = Release|x64
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Release|x64.Build.0 = Release|x64
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Release|x86.ActiveCfg = Release|x86
-		{1DBC4D60-0064-4A53-B48C-63D144A67B07}.Release|x86.Build.0 = Release|x86
-		{52567721-66A9-4411-9ED6-48DE37732868}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{52567721-66A9-4411-9ED6-48DE37732868}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{52567721-66A9-4411-9ED6-48DE37732868}.Debug|x64.ActiveCfg = Debug|x64
-		{52567721-66A9-4411-9ED6-48DE37732868}.Debug|x64.Build.0 = Debug|x64
-		{52567721-66A9-4411-9ED6-48DE37732868}.Debug|x86.ActiveCfg = Debug|x86
-		{52567721-66A9-4411-9ED6-48DE37732868}.Debug|x86.Build.0 = Debug|x86
-		{52567721-66A9-4411-9ED6-48DE37732868}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{52567721-66A9-4411-9ED6-48DE37732868}.Release|Any CPU.Build.0 = Release|Any CPU
-		{52567721-66A9-4411-9ED6-48DE37732868}.Release|x64.ActiveCfg = Release|x64
-		{52567721-66A9-4411-9ED6-48DE37732868}.Release|x64.Build.0 = Release|x64
-		{52567721-66A9-4411-9ED6-48DE37732868}.Release|x86.ActiveCfg = Release|x86
-		{52567721-66A9-4411-9ED6-48DE37732868}.Release|x86.Build.0 = Release|x86
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Debug|x64.ActiveCfg = Debug|x64
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Debug|x64.Build.0 = Debug|x64
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Debug|x86.ActiveCfg = Debug|x86
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Debug|x86.Build.0 = Debug|x86
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Release|x64.ActiveCfg = Release|x64
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Release|x64.Build.0 = Release|x64
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Release|x86.ActiveCfg = Release|x86
-		{D86DEAB6-61EA-4008-B2AB-8D8CD5665023}.Release|x86.Build.0 = Release|x86
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Debug|x64.ActiveCfg = Debug|x64
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Debug|x64.Build.0 = Debug|x64
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Debug|x86.ActiveCfg = Debug|x86
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Debug|x86.Build.0 = Debug|x86
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Release|Any CPU.Build.0 = Release|Any CPU
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Release|x64.ActiveCfg = Release|x64
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Release|x64.Build.0 = Release|x64
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Release|x86.ActiveCfg = Release|x86
-		{9AADAE96-361F-48F0-B9B0-31B7DACD0492}.Release|x86.Build.0 = Release|x86
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Debug|x64.ActiveCfg = Debug|x64
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Debug|x64.Build.0 = Debug|x64
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Debug|x86.ActiveCfg = Debug|x86
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Debug|x86.Build.0 = Debug|x86
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Release|x64.ActiveCfg = Release|x64
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Release|x64.Build.0 = Release|x64
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Release|x86.ActiveCfg = Release|x86
-		{AD85761D-D716-45D4-96E0-5AEF6BD3DE59}.Release|x86.Build.0 = Release|x86
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Debug|x64.ActiveCfg = Debug|x64
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Debug|x64.Build.0 = Debug|x64
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Debug|x86.ActiveCfg = Debug|x86
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Debug|x86.Build.0 = Debug|x86
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Release|x64.ActiveCfg = Release|x64
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Release|x64.Build.0 = Release|x64
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Release|x86.ActiveCfg = Release|x86
-		{B157FAB7-9B6D-4BAE-ACF2-C6FB7D22EBBD}.Release|x86.Build.0 = Release|x86
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Debug|x64.ActiveCfg = Debug|x64
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Debug|x64.Build.0 = Debug|x64
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Debug|x86.ActiveCfg = Debug|x86
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Debug|x86.Build.0 = Debug|x86
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Release|x64.ActiveCfg = Release|x64
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Release|x64.Build.0 = Release|x64
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Release|x86.ActiveCfg = Release|x86
-		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Release|x86.Build.0 = Release|x86
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Debug|x64.ActiveCfg = Debug|x64
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Debug|x64.Build.0 = Debug|x64
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Debug|x86.ActiveCfg = Debug|x86
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Debug|x86.Build.0 = Debug|x86
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Release|x64.ActiveCfg = Release|x64
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Release|x64.Build.0 = Release|x64
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Release|x86.ActiveCfg = Release|x86
-		{7B60CBDC-E7E3-4610-91E2-7CE831A02D35}.Release|x86.Build.0 = Release|x86
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Debug|x64.ActiveCfg = Debug|x64
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Debug|x64.Build.0 = Debug|x64
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Debug|x86.ActiveCfg = Debug|x86
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Debug|x86.Build.0 = Debug|x86
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Release|Any CPU.Build.0 = Release|Any CPU
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Release|x64.ActiveCfg = Release|x64
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Release|x64.Build.0 = Release|x64
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Release|x86.ActiveCfg = Release|x86
-		{CFBF2410-99A1-44EC-BFEA-F1AD4C3DA622}.Release|x86.Build.0 = Release|x86
 		{73857A9C-9706-4B72-8D9C-210B5B6A5691}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{73857A9C-9706-4B72-8D9C-210B5B6A5691}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -197,16 +55,4 @@
 		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|x86.ActiveCfg = Release|x86
 		{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}.Release|x86.Build.0 = Release|x86
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Debug|x64.ActiveCfg = Debug|x64
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Debug|x64.Build.0 = Debug|x64
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Debug|x86.ActiveCfg = Debug|x86
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Debug|x86.Build.0 = Debug|x86
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Release|x64.ActiveCfg = Release|x64
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Release|x64.Build.0 = Release|x64
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Release|x86.ActiveCfg = Release|x86
-		{E80A68DB-D6E1-4395-ABF0-AFE09E4DEF8B}.Release|x86.Build.0 = Release|x86
 		{766DA4B7-2A0E-4CDE-8F90-93D8B1AD62CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{766DA4B7-2A0E-4CDE-8F90-93D8B1AD62CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
Index: branches/OKB/HeuristicLab.Services.OKB.DataAccess/3.3/Tests/UnitTest.cs
===================================================================
--- branches/OKB/HeuristicLab.Services.OKB.DataAccess/3.3/Tests/UnitTest.cs	(revision 4553)
+++ branches/OKB/HeuristicLab.Services.OKB.DataAccess/3.3/Tests/UnitTest.cs	(revision 4558)
@@ -20,11 +20,6 @@
 #endregion
 
-using System;
-using System.Text;
-using System.Collections.Generic;
-using System.Linq;
-using System.Data.Linq;
+using HeuristicLab.Services.OKB.DataAccess;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
-using HeuristicLab.Services.OKB.DataAccess;
 
 namespace HeuristicLab.Services.OKB.DataAccess_33.Tests {
@@ -85,5 +80,4 @@
         okb.Algorithms.DeleteAllOnSubmit(okb.Algorithms);
         okb.Problems.DeleteAllOnSubmit(okb.Problems);
-        okb.SolutionRepresentations.DeleteAllOnSubmit(okb.SolutionRepresentations);
         okb.ProblemClasses.DeleteAllOnSubmit(okb.ProblemClasses);
         okb.AlgorithmClasses.DeleteAllOnSubmit(okb.AlgorithmClasses);
@@ -91,7 +85,6 @@
         AlgorithmClass ac = new AlgorithmClass() { Name = "AlgorithmClass" };
         ProblemClass pc = new ProblemClass() { Name = "ProblemClass" };
-        SolutionRepresentation sr = new SolutionRepresentation() { Name = "SolutionRepresentation" };
         Algorithm a = new Algorithm() { Name = "Alg", AlgorithmClass = ac, PlatformId = 1 };
-        Problem p = new Problem() { Name = "Prb", ProblemClass = pc, SolutionRepresentation = sr, PlatformId = 1 };
+        Problem p = new Problem() { Name = "Prb", ProblemClass = pc, PlatformId = 1 };
         Experiment e = new Experiment() { Algorithm = a, Problem = p };
         AlgorithmParameter ap = new AlgorithmParameter() { Name = "Param", Algorithm = a, DataTypeId = 1 };
