Index: trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphVisualizationInfo.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphVisualizationInfo.cs	(revision 3421)
+++ trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorGraphVisualizationInfo.cs	(revision 3422)
@@ -81,7 +81,7 @@
       foreach (IOperator oper in this.operatorShapeInfoMapping.FirstValues) {
         foreach (IParameter param in oper.Parameters) {
+          IValueParameter opParam = param as IValueParameter;
           this.parameterOperatorMapping.Add(param, oper);
-          IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
-          if (opParam != null)
+          if (opParam != null && typeof(IOperator).IsAssignableFrom(param.DataType))
             this.RegisterOperatorParameterEvents(opParam);
           else
@@ -125,6 +125,6 @@
         foreach (IParameter param in oper.Parameters) {
           clone.parameterOperatorMapping.Add(param, oper);
-          IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
-          if (opParam != null)
+          IValueParameter opParam = param as IValueParameter;
+          if (opParam != null && typeof(IOperator).IsAssignableFrom(param.DataType)) 
             clone.RegisterOperatorParameterEvents(opParam);
           else
@@ -230,6 +230,15 @@
       IOperatorShapeInfo shapeInfo = (IOperatorShapeInfo)connectionInfo.From;
       IOperator op = this.operatorShapeInfoMapping.GetBySecond(shapeInfo);
-      IValueParameter<IOperator> param = (IValueParameter<IOperator>)op.Parameters[connectionInfo.ConnectorFrom];
+      IValueParameter param = (IValueParameter)op.Parameters[connectionInfo.ConnectorFrom];
       param.Value = null;
+    }
+
+    public override void AddConnectionInfo(IConnectionInfo connectionInfo) {
+      IOperatorShapeInfo shapeInfo = (IOperatorShapeInfo)connectionInfo.From;
+      IOperator op = this.operatorShapeInfoMapping.GetBySecond(shapeInfo);
+      IValueParameter param = (IValueParameter)op.Parameters.Where(p => p.Name == connectionInfo.ConnectorFrom).Single();
+      IOperatorShapeInfo shapeInfoTo = (IOperatorShapeInfo)connectionInfo.To;
+      IOperator opTo = this.operatorShapeInfoMapping.GetBySecond(shapeInfoTo);
+      param.Value = opTo;
     }
     #endregion
@@ -321,6 +330,6 @@
     private void AddParameter(IOperator op, IParameter param) {
       this.parameterOperatorMapping.Add(param, op);
-      IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
-      if (opParam != null) {
+      IValueParameter opParam = param as IValueParameter;
+      if (opParam != null && typeof(IOperator).IsAssignableFrom(param.DataType)) {
         this.RegisterOperatorParameterEvents(opParam);
         IOperatorShapeInfo shapeInfoFrom = this.operatorShapeInfoMapping.GetByFirst(op);
@@ -328,7 +337,7 @@
 
         if (opParam.Value != null) {
-          if (!this.operatorShapeInfoMapping.ContainsFirst(opParam.Value))
-            this.AddOperator(opParam.Value);
-          IOperatorShapeInfo shapeInfoTo = this.operatorShapeInfoMapping.GetByFirst(opParam.Value);
+          if (!this.operatorShapeInfoMapping.ContainsFirst((IOperator)opParam.Value))
+            this.AddOperator((IOperator)opParam.Value);
+          IOperatorShapeInfo shapeInfoTo = this.operatorShapeInfoMapping.GetByFirst((IOperator)opParam.Value);
           this.connectionInfos.Add(new ConnectionInfo(shapeInfoFrom, param.Name, shapeInfoTo, OperatorShapeInfoFactory.PredecessorConnector));
         }
@@ -338,6 +347,6 @@
 
     private void RemoveParameter(IOperator op, IParameter param) {
-      IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
-      if (opParam != null) {
+      IValueParameter opParam = param as IValueParameter;
+      if (opParam != null && typeof(IOperator).IsAssignableFrom(param.DataType)) {
         this.DeregisterOperatorParameterEvents(opParam);
         IOperatorShapeInfo shapeInfo = this.operatorShapeInfoMapping.GetByFirst(op);
@@ -352,5 +361,5 @@
 
     private void opParam_ValueChanged(object sender, EventArgs e) {
-      IValueParameter<IOperator> opParam = (IValueParameter<IOperator>)sender;
+      IValueParameter opParam = (IValueParameter)sender;
       IOperator op = this.parameterOperatorMapping[opParam];
       IOperatorShapeInfo shapeInfoFrom = this.operatorShapeInfoMapping.GetByFirst(op);
@@ -359,8 +368,8 @@
       this.connectionInfos.RemoveWhere(c => c.From == shapeInfoFrom && c.ConnectorFrom == opParam.Name);
       if (opParam.Value != null) {
-        if (!this.operatorShapeInfoMapping.ContainsFirst(opParam.Value))
-          this.AddOperator(opParam.Value);
-        IShapeInfo shapeInfoTo = this.operatorShapeInfoMapping.GetByFirst(opParam.Value);
-        this.AddConnectionInfo(new ConnectionInfo(shapeInfoFrom, opParam.Name, shapeInfoTo, OperatorShapeInfoFactory.PredecessorConnector));
+        if (!this.operatorShapeInfoMapping.ContainsFirst((IOperator)opParam.Value))
+          this.AddOperator((IOperator)opParam.Value);
+        IOperatorShapeInfo shapeInfoTo = this.operatorShapeInfoMapping.GetByFirst((IOperator)opParam.Value);
+        base.AddConnectionInfo(new ConnectionInfo(shapeInfoFrom, opParam.Name, shapeInfoTo, OperatorShapeInfoFactory.PredecessorConnector));
       }
     }
@@ -399,8 +408,8 @@
     }
 
-    private void RegisterOperatorParameterEvents(IValueParameter<IOperator> opParam) {
+    private void RegisterOperatorParameterEvents(IValueParameter opParam) {
       opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
     }
-    private void DeregisterOperatorParameterEvents(IValueParameter<IOperator> opParam) {
+    private void DeregisterOperatorParameterEvents(IValueParameter opParam) {
       opParam.ValueChanged -= new EventHandler(opParam_ValueChanged);
     }
@@ -426,5 +435,5 @@
 
     private void UpdateParameterLabels(IOperator op) {
-      IEnumerable<IParameter> parameters = op.Parameters.Where(p => !(p is IValueParameter<IOperator>));
+      IEnumerable<IParameter> parameters = op.Parameters.Where(p => !(p is IValueParameter && typeof(IOperator).IsAssignableFrom(p.DataType)));
       IOperatorShapeInfo operatorShapeInfo = this.operatorShapeInfoMapping.GetByFirst(op);
       if (parameters.Count() > 0)
Index: trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShape.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShape.cs	(revision 3421)
+++ trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShape.cs	(revision 3422)
@@ -206,8 +206,8 @@
       this.Children.Add(expandIconMaterial);
 
-      this.predecessor = this.CreateConnector("Predecessor", new Point(Rectangle.Left, Center.Y));
+      this.predecessor = this.CreateConnector(OperatorShapeInfoFactory.PredecessorConnector, new Point(Rectangle.Left, Center.Y));
       this.Connectors.Add(predecessor);
 
-      this.successor = this.CreateConnector("Successor", (new Point(Rectangle.Right, Center.Y)));
+      this.successor = this.CreateConnector(OperatorShapeInfoFactory.SuccessorConnector, (new Point(Rectangle.Right, Center.Y)));
       this.Connectors.Add(successor);
     }
Index: trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfo.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfo.cs	(revision 3421)
+++ trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfo.cs	(revision 3422)
@@ -160,5 +160,6 @@
       shape.Collapsed = this.Collapsed;
       foreach (string connectorName in this.connectorNames)
-        shape.AddConnector(connectorName);
+        if (connectorName != OperatorShapeInfoFactory.SuccessorConnector && connectorName != OperatorShapeInfoFactory.PredecessorConnector)
+          shape.AddConnector(connectorName);
 
       shape.UpdateLabels(this.labels);
@@ -191,6 +192,7 @@
         operatorShape.RemoveConnector(oldConnectorNames[j]);
 
-      //add new connectors
+      //add new connectors except successor and connector
       for (; i < this.connectorNames.Count; i++)
+        if (this.connectorNames[i] != OperatorShapeInfoFactory.SuccessorConnector && this.connectorNames[i] != OperatorShapeInfoFactory.PredecessorConnector)
         operatorShape.AddConnector(this.connectorNames[i]);
 
Index: trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfoFactory.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfoFactory.cs	(revision 3421)
+++ trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualization/OperatorShapeInfoFactory.cs	(revision 3422)
@@ -32,7 +32,8 @@
   internal static class OperatorShapeInfoFactory {
     public const string PredecessorConnector = "Predecessor";
+    public const string SuccessorConnector = "Successor";
     public static IOperatorShapeInfo CreateOperatorShapeInfo(IOperator op) {
-      IEnumerable<string> operatorParameterNames = op.Parameters.Where(p => p is IValueParameter<IOperator>).Select(p => p.Name);
-      IEnumerable<string> paramaterNameValues = op.Parameters.Where(p => !(p is IValueParameter<IOperator>)).Select(p => p.ToString());
+      IEnumerable<string> operatorParameterNames = op.Parameters.Where(p => p is IValueParameter && typeof(IOperator).IsAssignableFrom(p.DataType)).Select(p => p.Name);
+      IEnumerable<string> paramaterNameValues = op.Parameters.Where(p => !(p is IValueParameter && typeof(IOperator).IsAssignableFrom(p.DataType))).Select(p => p.ToString());
 
       OperatorShapeInfo operatorShapeInfo = new OperatorShapeInfo(operatorParameterNames, paramaterNameValues);
