Index: /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2967)
+++ /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2968)
@@ -103,4 +103,5 @@
       clone.Operators = (OperatorSet)cloner.Clone(operators);
       clone.initialOperator = (IOperator)cloner.Clone(initialOperator);
+      clone.visualizationInfo = cloner.Clone(visualizationInfo);
       return clone;
     }
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/GraphVisualizationInfo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/GraphVisualizationInfo.cs	(revision 2967)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/GraphVisualizationInfo.cs	(revision 2968)
@@ -49,5 +49,5 @@
         }
 
-        foreach(IOperator oper in value.FirstValues) {
+        foreach (IOperator oper in value.FirstValues) {
           foreach (IParameter param in oper.Parameters) {
             this.parameterOperatorMapping.Add(param, oper);
@@ -89,4 +89,40 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      GraphVisualizationInfo clone = new GraphVisualizationInfo();
+      cloner.RegisterClonedObject(this, clone);
+      clone.operatorGraph = (OperatorGraph)cloner.Clone(this.operatorGraph);
+      clone.oldInitialShape = (IOperatorShapeInfo)this.oldInitialShape.Clone(cloner);
+      clone.oldInitialShapeColor = this.oldInitialShapeColor;
+
+      IOperator op;
+      IOperatorShapeInfo shapeInfo;
+      foreach (KeyValuePair<IOperator, IOperatorShapeInfo> pair in this.operatorShapeInfoMapping.FirstEnumerable) {
+        op = (IOperator)cloner.Clone(pair.Key);
+        shapeInfo = (IOperatorShapeInfo)cloner.Clone(pair.Value);
+        clone.RegisterOperatorEvents(op);
+        clone.operatorParameterCollectionMapping.Add(op, pair.Key.Parameters);
+        clone.operatorShapeInfoMapping.Add(op, shapeInfo);
+        clone.shapeInfos.Add(shapeInfo);
+      }
+
+      foreach (IOperator oper in clone.operatorShapeInfoMapping.FirstValues) {
+        foreach (IParameter param in oper.Parameters) {
+          clone.parameterOperatorMapping.Add(param, oper);
+          IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
+          if (opParam != null) {
+            clone.RegisterOperatorParameterEvents(opParam);
+            shapeInfo = clone.operatorShapeInfoMapping.GetByFirst(oper);
+            if (opParam.Value != null) {
+              clone.connections.Add(new KeyValuePair<IOperatorShapeInfo, string>(shapeInfo, param.Name), clone.operatorShapeInfoMapping.GetByFirst(opParam.Value));
+            }
+          } else
+            clone.RegisterParameterEvents(param);
+        }
+      }
+
+      return clone;
+    }
+
     public event EventHandler InitialShapeChanged;
     private void operatorGraph_InitialOperatorChanged(object sender, EventArgs e) {
@@ -129,5 +165,5 @@
     }
 
-    
+
     private OperatorGraph operatorGraph;
     [Storable]
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/IShapeInfo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/IShapeInfo.cs	(revision 2967)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/IShapeInfo.cs	(revision 2968)
@@ -30,5 +30,5 @@
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
-  public interface IShapeInfo : IItem{
+  public interface IShapeInfo : IDeepCloneable{
     Type ShapeType { get; }
     Point Location { get; set; }
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShapeInfo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShapeInfo.cs	(revision 2967)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/OperatorShapeInfo.cs	(revision 2968)
@@ -192,4 +192,19 @@
       }
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      OperatorShapeInfo clone = (OperatorShapeInfo) base.Clone(cloner);
+      clone.collapsed = this.collapsed;
+      clone.color = this.color;
+      clone.lineColor = this.lineColor;
+      clone.lineWidth = this.lineWidth;
+      clone.title = this.title;
+      clone.icon = (Bitmap) this.icon.Clone();
+
+      clone.connectorNames = this.connectorNames.ToList();
+      clone.labels = this.labels.ToList();
+
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs	(revision 2967)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/Model/ShapeInfo.cs	(revision 2968)
@@ -31,8 +31,8 @@
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
-  internal abstract class ShapeInfo : Item,IShapeInfo {
+  internal abstract class ShapeInfo : DeepCloneable, IShapeInfo {
     private ShapeInfo() {
+    }
 
-    }
     protected ShapeInfo(Type shapeType) {
       if (!typeof(IShape).IsAssignableFrom(shapeType))
@@ -40,6 +40,4 @@
       this.shapeType = shapeType;
     }
-
-    public event EventHandler Changed;
 
     [Storable]
@@ -61,4 +59,5 @@
     }
 
+    public event EventHandler Changed;
     protected void OnChanged() {
       if (this.Changed != null)
@@ -76,4 +75,11 @@
       shape.Location = this.Location;
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      ShapeInfo clone = (ShapeInfo) base.Clone(cloner);
+      clone.shapeType = this.shapeType;
+      clone.location = this.location;
+      return clone;
+    }
   }
 }
