Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.HiveEngine/3.3/Exceptions/HiveEngineException.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.HiveEngine/3.3/Exceptions/HiveEngineException.cs	(revision 7137)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.HiveEngine/3.3/Exceptions/HiveEngineException.cs	(revision 7153)
@@ -1,3 +1,24 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
 
 namespace HeuristicLab.HiveEngine {
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.HiveEngine/3.3/Exceptions/ScopeMergeException.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.HiveEngine/3.3/Exceptions/ScopeMergeException.cs	(revision 7137)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.HiveEngine/3.3/Exceptions/ScopeMergeException.cs	(revision 7153)
@@ -1,3 +1,24 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
 
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/ConstrainedTypeValue.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/ConstrainedTypeValue.cs	(revision 7137)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/ConstrainedTypeValue.cs	(revision 7153)
@@ -2,10 +2,7 @@
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Data;
-using System.Drawing;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
 using HeuristicLab.PluginInfrastructure;
 
@@ -15,5 +12,4 @@
   public class ConstrainedTypeValue : TypeValue {
 
-    [Storable]
     private IEnumerable<Type> validTypes;
     public IEnumerable<Type> ValidTypes {
@@ -29,8 +25,10 @@
     }
 
-    public ConstrainedTypeValue() : base() {
+    public ConstrainedTypeValue()
+      : base() {
       this.readOnly = false;
     }
-    public ConstrainedTypeValue(Type value) : this() {
+    public ConstrainedTypeValue(Type value)
+      : this() {
       this.Value = value;
     }
@@ -51,14 +49,23 @@
   public class ConstrainedTypeValue<T> : ConstrainedTypeValue where T : class, IItem {
 
-    public ConstrainedTypeValue() : base() {
+    public ConstrainedTypeValue()
+      : base() {
       this.ValidTypes = ApplicationManager.Manager.GetTypes(typeof(T), true).ToList();
       this.Value = ValidTypes.First();
     }
-    public ConstrainedTypeValue(Type value) : base() {
+    public ConstrainedTypeValue(Type value)
+      : base() {
       this.ValidTypes = ApplicationManager.Manager.GetTypes(typeof(T), true).ToList();
       this.Value = value;
     }
+
     [StorableConstructor]
-    protected ConstrainedTypeValue(bool deserializing) : base(deserializing) { }
+    protected ConstrainedTypeValue(bool deserializing)
+      : base(deserializing) {
+      if (deserializing) {
+        this.ValidTypes = ApplicationManager.Manager.GetTypes(typeof(T), true).ToList();
+      }
+    }
+
     protected ConstrainedTypeValue(ConstrainedTypeValue original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs	(revision 7137)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs	(revision 7153)
@@ -21,5 +21,4 @@
     }
 
-    [Storable]
     public string Filename { get; set; }
 
@@ -66,5 +65,4 @@
     }
 
-    [Storable]
     protected Type[] validTypes;
     public Type[] ValidTypes {
@@ -136,5 +134,4 @@
     }
 
-    [Storable]
     protected IItemSet<IItem> validValues;
 
@@ -216,4 +213,5 @@
     [StorableConstructor]
     protected ParameterConfiguration(bool deserializing) { }
+
     protected ParameterConfiguration(ParameterConfiguration original, Cloner cloner)
       : base(original, cloner) {
@@ -236,5 +234,4 @@
     }
 
-
     public override IDeepCloneable Clone(Cloner cloner) {
       return new ParameterConfiguration(this, cloner);
@@ -242,4 +239,11 @@
     [StorableHook(HookType.AfterDeserialization)]
     protected virtual void AfterDeserialization() {
+      this.validTypes = GetValidTypes(parameterDataType).ToArray();
+
+      if (IsNullable) {
+        validTypes = new List<Type>(validTypes) { typeof(NullValue) }.ToArray();
+      }
+      this.validValues = CreateValidValues();
+
       if (this.valueConfigurations != null) RegisterValueConfigurationEvents();
       if (this.actualValue != null) RegisterActualValueEvents();
@@ -323,4 +327,24 @@
     }
 
+    private static IEnumerable<Type> GetValidTypes(Type parameter) {
+      // in case of IOperator return empty list, otherwise hundreds of types would be returned. this mostly occurs for Successor which will never be optimized
+      if (parameter == typeof(IOperator))
+        return new List<Type>();
+
+      // return only one type for ValueTypeValues<> (Int, Double, Percent, Bool). Otherwise 2 types would be returned for DoubleValue (PercentValue which is derived)
+      if (IsSubclassOfRawGeneric(typeof(ValueTypeValue<>), parameter))
+        return new List<Type> { parameter };
+
+      //TODO: not sure if this if makes sense; maybe only leave else branch here
+      if (IsSubclassOfRawGeneric(typeof(OptionalConstrainedValueParameter<>), parameter.GetType())) {
+        // use existing validvalues if known
+        var parameterValidValues = (IEnumerable)parameter.GetType().GetProperty("ValidValues").GetValue(parameter, new object[] { });
+        return parameterValidValues.Cast<object>().Select(x => x.GetType());
+      } else {
+        // otherwise use all assignable types
+        return ApplicationManager.Manager.GetTypes(parameter, true);
+      }
+    }
+
     private IItemSet<IItem> GetValidValues(IValueParameter parameter) {
       if (IsSubclassOfRawGeneric(typeof(OptionalConstrainedValueParameter<>), parameter.GetType())) {
@@ -330,5 +354,4 @@
         return null;
       }
-      
     }
 
@@ -612,5 +635,5 @@
     private void KeepActualValueConfigurationIndexConsistent() {
       if (this.valueConfigurations != null && this.valueConfigurations.CheckedItems.Count() > 0) {
-        if(this.valueConfigurations.Count <= this.actualValueConfigurationIndex &&
+        if (this.valueConfigurations.Count <= this.actualValueConfigurationIndex &&
            this.valueConfigurations.CheckedItems.Count(x => x.Index == this.actualValueConfigurationIndex) == 1) {
           // everything is ok; do nothing
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Plugin.cs.frame
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Plugin.cs.frame	(revision 7137)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Plugin.cs.frame	(revision 7153)
@@ -28,5 +28,5 @@
   [Plugin("HeuristicLab.Problems.MetaOptimization", "3.3.2.$WCREV$")]
   [PluginFile("HeuristicLab.Problems.MetaOptimization-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.Algorithms.GeneticAlgorithm", "3.3")]
+ [PluginDependency("HeuristicLab.Algorithms.GeneticAlgorithm", "3.3")]
   [PluginDependency("HeuristicLab.Analysis", "3.3")]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
@@ -38,9 +38,12 @@
   [PluginDependency("HeuristicLab.Encodings.IntegerVectorEncoding", "3.3")]
   [PluginDependency("HeuristicLab.Encodings.RealVectorEncoding", "3.3")]
+  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.4")]
   [PluginDependency("HeuristicLab.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic.Regression", "3.4")]
   [PluginDependency("HeuristicLab.Problems.TestFunctions", "3.3")]
   [PluginDependency("HeuristicLab.Random", "3.3")]
