Index: trunk/sources/HeuristicLab.Common/3.3/ObjectExtensions.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.3/ObjectExtensions.cs	(revision 6113)
+++ trunk/sources/HeuristicLab.Common/3.3/ObjectExtensions.cs	(revision 6114)
@@ -37,5 +37,6 @@
       objects.Add(obj);
 
-      if (obj is ValueType || obj is string) return;
+      //if (obj is ValueType || obj is string) return;
+      if (obj is Pointer) return;
 
       IEnumerable enumerable = obj as IEnumerable;
Index: trunk/sources/HeuristicLab.Common/3.3/TypeExtensions.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.3/TypeExtensions.cs	(revision 6113)
+++ trunk/sources/HeuristicLab.Common/3.3/TypeExtensions.cs	(revision 6114)
@@ -47,11 +47,12 @@
       return sb.ToString();
     }
+
     public static IEnumerable<FieldInfo> GetAllFields(this Type type) {
-      foreach(var field in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) 
+      foreach (var field in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
         yield return field;
 
-      foreach (var field in type.GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) 
+      foreach (var field in type.GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic))
         yield return field;
-      
+
       if (type.BaseType != null) {
         foreach (var field in type.BaseType.GetAllFields())
@@ -59,4 +60,5 @@
       }
     }
+
     // http://stackoverflow.com/questions/457676/c-reflection-check-if-a-class-is-derived-from-a-generic-class
     public static bool IsSubclassOfRawGeneric(this Type toCheck, Type generic) {
Index: trunk/sources/HeuristicLab.Operators/3.3/Operator.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 6113)
+++ trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 6114)
@@ -74,42 +74,40 @@
     protected Operator(bool deserializing)
       : base(deserializing) {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     protected Operator(Operator original, Cloner cloner)
       : base(original, cloner) {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       this.breakpoint = original.breakpoint;
     }
     protected Operator()
       : base() {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       breakpoint = false;
     }
     protected Operator(string name)
       : base(name) {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       breakpoint = false;
     }
     protected Operator(string name, ParameterCollection parameters)
       : base(name, parameters) {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       breakpoint = false;
     }
     protected Operator(string name, string description)
       : base(name, description) {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       breakpoint = false;
     }
     protected Operator(string name, string description, ParameterCollection parameters)
       : base(name, description, parameters) {
-      InitializeState();
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       breakpoint = false;
     }
 
-    public virtual void InitializeState() {
+    public virtual void InitializeState() { }
+    public virtual void ClearState() {
       executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
-    }
-    public virtual void ClearState() {
-      executionContexts = null;
     }
 
@@ -123,5 +121,6 @@
         OnExecuted();
         return next;
-      } finally {
+      }
+      finally {
         foreach (IParameter param in Parameters)
           param.ExecutionContext = null;
Index: trunk/sources/HeuristicLab.Optimization/3.3/Algorithms/Algorithm.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization/3.3/Algorithms/Algorithm.cs	(revision 6113)
+++ trunk/sources/HeuristicLab.Optimization/3.3/Algorithms/Algorithm.cs	(revision 6114)
@@ -260,9 +260,9 @@
     public event EventHandler Prepared;
     protected virtual void OnPrepared() {
+      ExecutionState = ExecutionState.Prepared;
       ExecutionTime = TimeSpan.Zero;
       foreach (IStatefulItem statefulObject in this.GetObjectGraphObjects().OfType<IStatefulItem>()) {
         statefulObject.InitializeState();
       }
-      ExecutionState = ExecutionState.Prepared;
       EventHandler handler = Prepared;
       if (handler != null) handler(this, EventArgs.Empty);
Index: trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs
===================================================================
--- trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 6113)
+++ trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 6114)
@@ -92,5 +92,6 @@
     protected Parameter(bool deserializing)
       : base(deserializing) {
-      InitializeState();
+      cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     protected Parameter(Parameter original, Cloner cloner)
@@ -98,5 +99,6 @@
       dataType = original.dataType;
       hidden = original.hidden;
-      InitializeState();
+      cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     protected Parameter()
@@ -104,5 +106,6 @@
       dataType = typeof(IItem);
       hidden = false;
-      InitializeState();
+      cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     protected Parameter(string name, Type dataType)
@@ -111,5 +114,6 @@
       this.dataType = dataType;
       hidden = false;
-      InitializeState();
+      cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     protected Parameter(string name, string description, Type dataType)
@@ -118,14 +122,12 @@
       this.dataType = dataType;
       hidden = false;
-      InitializeState();
-    }
-
-    public virtual void InitializeState() {
       cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
       executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
+
+    public virtual void InitializeState() { }
     public virtual void ClearState() {
-      cachedActualValues = null;
-      executionContexts = null;
+      cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
+      executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
 
