Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ParameterConfigurations/ParameterConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ParameterConfigurations/ParameterConfiguration.cs	(revision 4981)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ParameterConfigurations/ParameterConfiguration.cs	(revision 4982)
@@ -117,6 +117,12 @@
 
     private void PopulateValueConfigurations() {
-      foreach (IItem item in this.validValues) {
-        this.ValueConfigurations.Add(new ValueConfiguration(item, item.GetType()), false);
+      foreach (IItem validValue in this.validValues) {
+        IItem val;
+        if (actualValueConfiguration.ConstrainedValue.Value != null && actualValueConfiguration.ConstrainedValue.ValueDataType == validValue.GetType()) {
+          val = actualValueConfiguration.ConstrainedValue.Value; // use existing value for that type (if available)
+        } else {
+          val = validValue;
+        }
+        this.ValueConfigurations.Add(new ValueConfiguration(val, val.GetType()), true);
       }
     }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/CheckedValueConfigurationCollection.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/CheckedValueConfigurationCollection.cs	(revision 4981)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/CheckedValueConfigurationCollection.cs	(revision 4982)
@@ -4,10 +4,19 @@
 using System.Text;
 using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Problems.MetaOptimization {
   // todo: check that at least 1 elements needs to be selected
   // todo: control creatable item types
+  [StorableClass]
   public class CheckedValueConfigurationCollection : CheckedItemCollection<IValueConfiguration>, ICheckedValueConfigurationCollection {
+    [Storable]
+    private int minItemCount = 1;
+    public int MinItemCount { 
+      get { return minItemCount; } 
+    }
 
+    [Storable]
     protected Type valueDataType;
     public Type ValueDataType {
@@ -17,4 +26,39 @@
     public CheckedValueConfigurationCollection(Type valueDataType) {
       this.valueDataType = valueDataType;
+      RegisterEvents();
+    }
+    public CheckedValueConfigurationCollection() {
+      RegisterEvents();
+    }
+    [StorableConstructor]
+    protected CheckedValueConfigurationCollection(bool deserializing) : base(deserializing) {
+      RegisterEvents();
+    }
+    protected CheckedValueConfigurationCollection(CheckedValueConfigurationCollection original, Cloner cloner) : base(original, cloner) {
+      this.minItemCount = original.MinItemCount;
+      this.valueDataType = original.valueDataType;
+      RegisterEvents();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CheckedValueConfigurationCollection(this, cloner);
+    }
+
+    private void RegisterEvents() {
+      this.ItemsRemoved += new Collections.CollectionItemsChangedEventHandler<IValueConfiguration>(CheckedValueConfigurationCollection_ItemsRemoved);
+    }
+    private void DeregisterEvents() {
+      this.ItemsRemoved -= new Collections.CollectionItemsChangedEventHandler<IValueConfiguration>(CheckedValueConfigurationCollection_ItemsRemoved);
+    }
+
+    private void CheckedValueConfigurationCollection_ItemsRemoved(object sender, Collections.CollectionItemsChangedEventArgs<IValueConfiguration> e) {
+      // auch collectionreset gehört berücksichtigt
+      // funktioniert so nicht ganz, weil die view das hinzufügen nicht mitkriegt
+      //if (this.Count < minItemCount) {
+      //  foreach (var item in e.Items) {
+      //    if (this.Count >= minItemCount)
+      //      break;
+      //    this.Add(item);
+      //  }
+      //}
     }
   }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/RootValueConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/RootValueConfiguration.cs	(revision 4982)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/RootValueConfiguration.cs	(revision 4982)
@@ -0,0 +1,22 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.MetaOptimization {
+  // todo: storable, name, descr, ...
+  public class RootValueConfiguration : ValueConfiguration {
+
+    public RootValueConfiguration(IItem value, Type valueDataType) : base(value, valueDataType) {
+      this.Optimize = true; // root must always be optimized
+    }
+    public RootValueConfiguration() { }
+    protected RootValueConfiguration(RootValueConfiguration original, Cloner cloner) : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RootValueConfiguration(this, cloner);
+    }
+  }
+}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/ValueConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/ValueConfiguration.cs	(revision 4981)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/ValueConfiguration.cs	(revision 4982)
@@ -30,5 +30,5 @@
     protected IItemCollection<IParameterConfiguration> parameterConfigurations = new ItemCollection<IParameterConfiguration>();
     public IItemCollection<IParameterConfiguration> ParameterConfigurations {
-      get { return this.parameterConfigurations; }
+      get { return new ReadOnlyItemCollection<IParameterConfiguration>(this.parameterConfigurations); }
       protected set { this.parameterConfigurations = value; }
     }
@@ -55,5 +55,5 @@
     #region Constructors and Cloning
     public ValueConfiguration(IItem value, Type valueDataType) {
-      this.parameterConfigurations = new ItemList<IParameterConfiguration>();
+      this.ParameterConfigurations = new ItemList<IParameterConfiguration>();
       this.ConstrainedValue = new ConstrainedValue(value, valueDataType);
       if (constrainedValue.ValueDataType == typeof(IntValue)) {
@@ -86,10 +86,10 @@
         foreach (var childParameter in parameterizedItem.Parameters) {
           var pc = ParameterConfiguration.Create(parameterizedItem, childParameter);
-          if (pc != null) this.ParameterConfigurations.Add(pc);
+          if (pc != null) this.parameterConfigurations.Add(pc);
         }
       }
     }
     protected virtual void ClearParameterConfigurations() {
-      ParameterConfigurations.Clear();
+      parameterConfigurations.Clear();
     }
 
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLab.Problems.MetaOptimization-3.3.csproj
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLab.Problems.MetaOptimization-3.3.csproj	(revision 4981)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLab.Problems.MetaOptimization-3.3.csproj	(revision 4982)
@@ -88,7 +88,10 @@
   <ItemGroup>
     <Compile Include="Analyzers\BestParameterConfigurationAnalyzer.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+    <None Include="HeuristicLabProblemsMetaOptimizationPlugin.cs.frame" />
     <Compile Include="Encodings\RangeConstraints\ConstrainedValue.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Encodings\ValueConfigurations\RootValueConfiguration.cs" />
     <Compile Include="Encodings\ValueConfigurations\ValueConfiguration.cs" />
     <Compile Include="Encodings\ValueConfigurations\CheckedValueConfigurationCollection.cs" />
@@ -120,5 +123,7 @@
 set ProjectDir=$(ProjectDir)
 set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)</PreBuildEvent>
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
   </PropertyGroup>
   <PropertyGroup>
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLabProblemsMetaOptimizationPlugin.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLabProblemsMetaOptimizationPlugin.cs	(revision 4981)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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 HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Problems.MetaOptimization {
-  /// <summary>
-  /// Plugin class for HeuristicLab.Problems.MetaOptimization plugin
-  /// </summary>
-  [Plugin("HeuristicLab.Problems.MetaOptimization", "3.3.0.0")]
-  [PluginFile("HeuristicLab.Problems.MetaOptimization-3.3.dll", PluginFileType.Assembly)]
-  public class HeuristicLabProblemsMetaOptimizationPlugin : PluginBase {
-  }
-}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLabProblemsMetaOptimizationPlugin.cs.frame
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLabProblemsMetaOptimizationPlugin.cs.frame	(revision 4982)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLabProblemsMetaOptimizationPlugin.cs.frame	(revision 4982)
@@ -0,0 +1,44 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.MetaOptimization {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Problems.MetaOptimization plugin
+  /// </summary>
+  [Plugin("HeuristicLab.Problems.MetaOptimization", "3.3.2.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.MetaOptimization-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.BinaryVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.IntegerVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.RealVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  public class HeuristicLabProblemsMetaOptimizationPlugin : PluginBase {
+  }
+}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/ICheckedValueConfigurationCollection.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/ICheckedValueConfigurationCollection.cs	(revision 4981)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/ICheckedValueConfigurationCollection.cs	(revision 4982)
@@ -7,4 +7,5 @@
 namespace HeuristicLab.Problems.MetaOptimization {
   public interface ICheckedValueConfigurationCollection : ICheckedItemCollection<IValueConfiguration> {
+    int MinItemCount { get; }
     Type ValueDataType { get; }
   }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs	(revision 4981)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs	(revision 4982)
@@ -153,5 +153,5 @@
       if (Algorithm != null) {
         Algorithm.ProblemChanged += new EventHandler(BaseLevelAlgorithm_ProblemChanged);
-        AlgorithmParameterConfiguration = new ValueConfiguration(Algorithm, Algorithm.GetType());
+        AlgorithmParameterConfiguration = new RootValueConfiguration(Algorithm, Algorithm.GetType());
       }
       BaseLevelAlgorithm_ProblemChanged(sender, e);
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Properties/AssemblyInfo.cs	(revision 4981)
+++ 	(revision )
@@ -1,35 +1,0 @@
-﻿using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("HeuristicLab.Problems.MetaOptimization")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("HeuristicLab.Problems.MetaOptimization")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("99313b3e-2734-4d09-a35d-4eb1db88a88e")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Properties/AssemblyInfo.cs.frame	(revision 4982)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Properties/AssemblyInfo.cs.frame	(revision 4982)
@@ -0,0 +1,35 @@
+﻿using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.MetaOptimization")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("99313b3e-2734-4d09-a35d-4eb1db88a88e")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.2.0")]
+[assembly: AssemblyFileVersion("3.3.2.$WCREV$")]
