Index: /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/IModelerUserInterfaceItemProvider.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/IModelerUserInterfaceItemProvider.cs	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/IModelerUserInterfaceItemProvider.cs	(revision 11401)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/ModelerDockingMainForm.Designer.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/ModelerDockingMainForm.Designer.cs	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/ModelerDockingMainForm.Designer.cs	(revision 11401)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/ModelerDockingMainForm.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/ModelerDockingMainForm.cs	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/ModelerDockingMainForm.cs	(revision 11401)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/Plugin.cs.frame
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/Plugin.cs.frame	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/Plugin.cs.frame	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/Properties/AssemblyInfo.cs.frame	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Modeler/3.3/Properties/AssemblyInfo.cs.frame	(revision 11401)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -32,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2013 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2014 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Plugin.cs.frame	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Plugin.cs.frame	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -32,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2013 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2014 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
Index: anches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Entity.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Entity.cs	(revision 11400)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 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.Drawing;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Optimization.Networks {
-  [Item("Entity", "An entity of an optimization network.")]
-  [StorableClass]
-  public class Entity : NamedItem, IEntity {
-    public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
-    }
-
-    [Storable]
-    private PortCollection ports;
-    protected PortCollection Ports {
-      get { return ports; }
-    }
-    private ReadOnlyKeyedItemCollection<string, IPort> readOnlyPorts;
-    IKeyedItemCollection<string, IPort> IEntity.Ports {
-      get {
-        if (readOnlyPorts == null) readOnlyPorts = ports.AsReadOnly();
-        return readOnlyPorts;
-      }
-    }
-
-    [StorableConstructor]
-    protected Entity(bool deserializing) : base(deserializing) { }
-    protected Entity(Entity original, Cloner cloner)
-      : base(original, cloner) {
-      ports = cloner.Clone(original.ports);
-      readOnlyPorts = null;
-    }
-    public Entity()
-      : base("Anonymous") {
-      ports = new PortCollection();
-      readOnlyPorts = null;
-    }
-    public Entity(string name)
-      : base(name) {
-      ports = new PortCollection();
-      readOnlyPorts = null;
-    }
-    public Entity(string name, string description)
-      : base(name, description) {
-      ports = new PortCollection();
-      readOnlyPorts = null;
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Entity(this, cloner);
-    }
-  }
-}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/EventArgs.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/EventArgs.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/EventArgs.cs	(revision 11401)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Core;
+using System;
+
+namespace HeuristicLab.Optimization.Networks {
+  public class OutputInputPortEventArgs<T> : EventArgs where T : class, IItem {
+    public T Result { get; set; }
+
+    public OutputInputPortEventArgs() { }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/HeuristicLab.Optimization.Networks-3.3.csproj
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/HeuristicLab.Optimization.Networks-3.3.csproj	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/HeuristicLab.Optimization.Networks-3.3.csproj	(revision 11401)
@@ -48,11 +48,23 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Entity.cs" />
-    <Compile Include="IEntity.cs" />
+    <Compile Include="EventArgs.cs" />
+    <Compile Include="IInputOutputPort.cs" />
+    <Compile Include="InputOutputPort.cs" />
+    <Compile Include="IOutputInputPort.cs" />
+    <Compile Include="OutputInputPort.cs" />
+    <Compile Include="OutputPort.cs" />
+    <Compile Include="IOutputPort.cs" />
+    <Compile Include="INetwork.cs" />
+    <Compile Include="IInputPort.cs" />
     <Compile Include="IPort.cs" />
+    <Compile Include="INode.cs" />
+    <Compile Include="Network.cs" />
+    <Compile Include="InputPort.cs" />
+    <Compile Include="NodeCollection.cs" />
     <Compile Include="PortCollection.cs" />
     <Compile Include="Port.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Node.cs" />
   </ItemGroup>
   <ItemGroup>
Index: anches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IEntity.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IEntity.cs	(revision 11400)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 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.Collections.Generic;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Optimization.Networks {
-  public interface IEntity : INamedItem {
-    IKeyedItemCollection<string, IPort> Ports { get; }
-  }
-}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IInputOutputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IInputOutputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IInputOutputPort.cs	(revision 11401)
@@ -0,0 +1,34 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Core;
+
+namespace HeuristicLab.Optimization.Networks {
+  public interface IInputOutputPort : IPort {
+    IOutputInputPort OutputInputPort { get; }
+  }
+
+  public interface IInputOutputPort<TIn, TOut> : IInputOutputPort, IPort<TIn>
+    where TIn : class, IItem
+    where TOut : class, IItem {
+    new IOutputInputPort<TIn, TOut> OutputInputPort { get; set; }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IInputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IInputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IInputPort.cs	(revision 11401)
@@ -0,0 +1,33 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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 HeuristicLab.Core;
+
+namespace HeuristicLab.Optimization.Networks {
+  public interface IInputPort : IPort {
+    IOutputPort OutputPort { get; }
+  }
+
+  public interface IInputPort<T> : IInputPort, IPort<T> where T : class, IItem {
+    new IOutputPort<T> OutputPort { get; set; }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/INetwork.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/INetwork.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/INetwork.cs	(revision 11401)
@@ -0,0 +1,29 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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 HeuristicLab.Core;
+
+namespace HeuristicLab.Optimization.Networks {
+  public interface INetwork : INode {
+    NodeCollection Nodes { get; }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/INode.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/INode.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/INode.cs	(revision 11401)
@@ -0,0 +1,29 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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 HeuristicLab.Core;
+
+namespace HeuristicLab.Optimization.Networks {
+  public interface INode : INamedItem {
+    IKeyedItemCollection<string, IPort> Ports { get; }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IOutputInputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IOutputInputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IOutputInputPort.cs	(revision 11401)
@@ -0,0 +1,37 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Core;
+using System;
+
+namespace HeuristicLab.Optimization.Networks {
+  public interface IOutputInputPort : IPort {
+    object SendValue(object value);
+  }
+
+  public interface IOutputInputPort<TOut, TIn> : IOutputInputPort, IPort<TOut>
+    where TOut : class, IItem
+    where TIn : class, IItem {
+    TIn SendValue(TOut value);
+
+    event EventHandler<OutputInputPortEventArgs<TIn>> ValueSent;
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IOutputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IOutputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IOutputPort.cs	(revision 11401)
@@ -0,0 +1,32 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Core;
+
+namespace HeuristicLab.Optimization.Networks {
+  public interface IOutputPort : IPort {
+    new object Value { get; set; }
+  }
+
+  public interface IOutputPort<T> : IOutputPort, IPort<T> where T : class, IItem {
+    new T Value { get; set; }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IPort.cs	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/IPort.cs	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -20,10 +20,10 @@
 #endregion
 
+using HeuristicLab.Core;
 using System;
-using HeuristicLab.Core;
 
 namespace HeuristicLab.Optimization.Networks {
   public interface IPort : INamedItem {
-    object Value { get; set; }
+    object Value { get; }
 
     event EventHandler ValueChanged;
@@ -31,5 +31,5 @@
 
   public interface IPort<T> : IPort where T : class, IItem {
-    new T Value { get; set; }
+    new T Value { get; }
   }
 }
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/InputOutputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/InputOutputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/InputOutputPort.cs	(revision 11401)
@@ -0,0 +1,88 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System;
+
+namespace HeuristicLab.Optimization.Networks {
+  [Item("InputOutputPort", "A synchronous input/output port of an optimization network node.")]
+  [StorableClass]
+  public class InputOutputPort<TIn, TOut> : Port<TIn>, IInputOutputPort<TIn, TOut>
+    where TIn : class, IItem
+    where TOut : class, IItem {
+    [Storable]
+    private IOutputInputPort<TIn, TOut> outputInputPort;
+    public IOutputInputPort<TIn, TOut> OutputInputPort {
+      get { return outputInputPort; }
+      set {
+        if (outputInputPort != value) {
+          DeregisterOutputInputPortEvents();
+          outputInputPort = value;
+          RegisterOutputInputPortEvents();
+          OnOutputInputPortChanged();
+        }
+      }
+    }
+    IOutputInputPort IInputOutputPort.OutputInputPort {
+      get { return outputInputPort; }
+    }
+
+    [StorableConstructor]
+    protected InputOutputPort(bool deserializing) : base(deserializing) { }
+    protected InputOutputPort(InputOutputPort<TIn, TOut> original, Cloner cloner) : base(original, cloner) {
+      outputInputPort = cloner.Clone(original.outputInputPort);
+      RegisterOutputInputPortEvents();
+    }
+    public InputOutputPort() : base("InputOutputPort") { }
+    public InputOutputPort(string name) : base(name) { }
+    public InputOutputPort(string name, string description) : base(name, description) { }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterOutputInputPortEvents();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new InputOutputPort<TIn, TOut>(this, cloner);
+    }
+
+    public event EventHandler OutputInputPortChanged;
+    protected void OnOutputInputPortChanged() {
+      var handler = OutputInputPortChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    protected void RegisterOutputInputPortEvents() {
+      outputInputPort.ValueSent += OutputInputPort_ValueSent;
+    }
+    protected void DeregisterOutputInputPortEvents() {
+      outputInputPort.ValueSent -= OutputInputPort_ValueSent;
+    }
+    protected void OutputInputPort_ValueSent(object sender, OutputInputPortEventArgs<TOut> e) {
+      Value = OutputInputPort.Value;
+      //TODO: switch threads to decouple value propagation and resulting action
+      //TODO: clone value?
+      //TODO: add computed result to event args
+    }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/InputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/InputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/InputPort.cs	(revision 11401)
@@ -0,0 +1,87 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System;
+
+namespace HeuristicLab.Optimization.Networks {
+  [Item("InputPort", "An asynchronous input port of an optimization network node.")]
+  [StorableClass]
+  public class InputPort<T> : Port<T>, IInputPort<T> where T : class, IItem {
+    [Storable]
+    private IOutputPort<T> outputPort;
+    public IOutputPort<T> OutputPort {
+      get { return outputPort; }
+      set {
+        if (outputPort != value) {
+          DeregisterOutputPortEvents();
+          outputPort = value;
+          RegisterOutputPortEvents();
+          OnOutputPortChanged();
+        }
+      }
+    }
+    IOutputPort IInputPort.OutputPort {
+      get { return outputPort; }
+    }
+
+    [StorableConstructor]
+    protected InputPort(bool deserializing) : base(deserializing) { }
+    protected InputPort(InputPort<T> original, Cloner cloner) : base(original, cloner) {
+      outputPort = cloner.Clone(original.outputPort);
+      RegisterOutputPortEvents();
+    }
+    public InputPort() : base("InputPort") { }
+    public InputPort(string name) : base(name) { }
+    public InputPort(string name, string description) : base(name, description) { }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterOutputPortEvents();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new InputPort<T>(this, cloner);
+    }
+
+    public event EventHandler OutputPortChanged;
+    protected void OnOutputPortChanged() {
+      var handler = OutputPortChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    protected void RegisterOutputPortEvents() {
+      outputPort.ValueChanged += OutputPort_ValueChanged;
+      
+    }
+    protected void DeregisterOutputPortEvents() {
+      outputPort.ValueChanged -= OutputPort_ValueChanged;
+    }
+    protected void OutputPort_ValueChanged(object sender, EventArgs e) {
+      Value = OutputPort.Value;
+      //TODO: switch threads to decouple value propagation and to make communication asynchronous
+      //TODO: clone value?
+      //TODO: clone value?
+    }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Network.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Network.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Network.cs	(revision 11401)
@@ -0,0 +1,65 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System.Drawing;
+
+namespace HeuristicLab.Optimization.Networks {
+  [Item("Network", "An optimization network.")]
+  [Creatable("Optimization Networks")]
+  [StorableClass]
+  public class Network : Node, INetwork {
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.Module; }
+    }
+
+    [Storable]
+    private NodeCollection nodes;
+    public NodeCollection Nodes {
+      get { return nodes; }
+    }
+
+    [StorableConstructor]
+    protected Network(bool deserializing) : base(deserializing) { }
+    protected Network(Network original, Cloner cloner)
+      : base(original, cloner) {
+      nodes = cloner.Clone(original.nodes);
+    }
+    public Network()
+      : base("Network") {
+      nodes = new NodeCollection();
+    }
+    public Network(string name)
+      : base(name) {
+      nodes = new NodeCollection();
+    }
+    public Network(string name, string description)
+      : base(name, description) {
+      nodes = new NodeCollection();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Network(this, cloner);
+    }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Node.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Node.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Node.cs	(revision 11401)
@@ -0,0 +1,76 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization.Networks {
+  [Item("Node", "A node of an optimization network.")]
+  [StorableClass]
+  public class Node : NamedItem, INode {
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.RadialChart; }
+    }
+
+    [Storable]
+    private PortCollection ports;
+    protected PortCollection Ports {
+      get { return ports; }
+    }
+    private ReadOnlyKeyedItemCollection<string, IPort> readOnlyPorts;
+    IKeyedItemCollection<string, IPort> INode.Ports {
+      get {
+        if (readOnlyPorts == null) readOnlyPorts = ports.AsReadOnly();
+        return readOnlyPorts;
+      }
+    }
+
+    [StorableConstructor]
+    protected Node(bool deserializing) : base(deserializing) { }
+    protected Node(Node original, Cloner cloner)
+      : base(original, cloner) {
+      ports = cloner.Clone(original.ports);
+      readOnlyPorts = null;
+    }
+    public Node()
+      : base("Node") {
+      ports = new PortCollection();
+      readOnlyPorts = null;
+    }
+    public Node(string name)
+      : base(name) {
+      ports = new PortCollection();
+      readOnlyPorts = null;
+    }
+    public Node(string name, string description)
+      : base(name, description) {
+      ports = new PortCollection();
+      readOnlyPorts = null;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Node(this, cloner);
+    }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/NodeCollection.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/NodeCollection.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/NodeCollection.cs	(revision 11401)
@@ -0,0 +1,40 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Collections.Generic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization.Networks {
+  [StorableClass]
+  [Item("NodeCollection", "Represents a collection of optimization network nodes.")]
+  public class NodeCollection : NamedItemCollection<INode> {
+    [StorableConstructor]
+    protected NodeCollection(bool deserializing) : base(deserializing) { }
+    protected NodeCollection(NodeCollection original, Cloner cloner) : base(original, cloner) { }
+    public NodeCollection() : base() { }
+    public NodeCollection(int capacity) : base(capacity) { }
+    public NodeCollection(IEnumerable<INode> collection) : base(collection) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) { return new NodeCollection(this, cloner); }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/OutputInputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/OutputInputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/OutputInputPort.cs	(revision 11401)
@@ -0,0 +1,67 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System;
+
+namespace HeuristicLab.Optimization.Networks {
+  [Item("OutputInputPort", "A synchronous output/input port of an optimization network node.")]
+  [StorableClass]
+  public class OutputInputPort<TOut, TIn> : Port<TOut>, IOutputInputPort<TOut, TIn>
+    where TOut : class, IItem
+    where TIn : class, IItem {
+
+    [StorableConstructor]
+    protected OutputInputPort(bool deserializing) : base(deserializing) { }
+    protected OutputInputPort(OutputInputPort<TOut, TIn> original, Cloner cloner) : base(original, cloner) { }
+    public OutputInputPort() : base("OutputInputPort") { }
+    public OutputInputPort(string name) : base(name) { }
+    public OutputInputPort(string name, string description) : base(name, description) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OutputInputPort<TOut, TIn>(this, cloner);
+    }
+
+    public TIn SendValue(TOut value) {
+      Value = value;
+      return OnValueSent();
+    }
+    public object SendValue(object value) {
+      TOut val = value as TOut;
+      if ((value != null) && (val == null))
+        throw new InvalidOperationException(
+          string.Format("Type mismatch. Value is not a \"{0}\".",
+                        typeof(TOut).GetPrettyName())
+        );
+      return SendValue(val);
+    }
+
+    public event EventHandler<OutputInputPortEventArgs<TIn>> ValueSent;
+    protected virtual TIn OnValueSent() {
+      var args = new OutputInputPortEventArgs<TIn>();
+      var handler = ValueSent;
+      if (handler != null) handler(this, args);
+      return args.Result;
+    }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/OutputPort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/OutputPort.cs	(revision 11401)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/OutputPort.cs	(revision 11401)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System;
+
+namespace HeuristicLab.Optimization.Networks {
+  [Item("OutputPort", "An asynchronous output port of an optimization network node.")]
+  [StorableClass]
+  public class OutputPort<T> : Port<T>, IOutputPort<T> where T : class, IItem {
+    new public T Value {
+      get { return base.Value; }
+      set { base.Value = value; }
+    }
+    object IOutputPort.Value {
+      get { return Value; }
+      set {
+        T val = value as T;
+        if ((value != null) && (val == null))
+          throw new InvalidOperationException(
+            string.Format("Type mismatch. Value is not a \"{0}\".",
+                          typeof(T).GetPrettyName())
+          );
+        Value = val;
+      }
+    }
+
+    [StorableConstructor]
+    protected OutputPort(bool deserializing) : base(deserializing) { }
+    protected OutputPort(OutputPort<T> original, Cloner cloner) : base(original, cloner) { }
+    public OutputPort() : base("OutputPort") { }
+    public OutputPort(string name) : base(name) { }
+    public OutputPort(string name, string description) : base(name, description) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OutputPort<T>(this, cloner);
+    }
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Plugin.cs.frame
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Plugin.cs.frame	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Plugin.cs.frame	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Port.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Port.cs	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Port.cs	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -20,26 +20,23 @@
 #endregion
 
-using System;
-using System.Drawing;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System;
+using System.Drawing;
 
 namespace HeuristicLab.Optimization.Networks {
-  [Item("Port", "A port of an optimization network entity.")]
+  [Item("Port", "Abstract base class for ports of an optimization network node.")]
   [StorableClass]
-  public class Port<T> : NamedItem, IPort<T> where T : class, IItem {
-    public override Image ItemImage {
-      get {
-        if (value != null) return value.ItemImage;
-        else return base.ItemImage;
-      }
+  public abstract class Port<T> : NamedItem, IPort<T> where T : class, IItem {
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.Field; }
     }
 
     [Storable]
     protected T value;
-    public T Value {
+    public virtual T Value {
       get { return value; }
-      set {
+      protected set {
         if (value != this.value) {
           DeregisterValueEvents();
@@ -52,13 +49,4 @@
     object IPort.Value {
       get { return Value; }
-      set {
-        T val = value as T;
-        if ((value != null) && (val == null))
-          throw new InvalidOperationException(
-            string.Format("Type mismatch. Value is not a \"{0}\".",
-                          typeof(T).GetPrettyName())
-          );
-        Value = val;
-      }
     }
 
@@ -70,25 +58,11 @@
       RegisterValueEvents();
     }
-    public Port() : base("Anonymous") { }
-    public Port(string name) : base(name) { }
-    public Port(string name, string description) : base(name, description) { }
-    public Port(string name, T value)
-      : base(name) {
-      this.value = value;
-      RegisterValueEvents();
-    }
-    public Port(string name, string description, T value)
-      : base(name, description) {
-      this.value = value;
-      RegisterValueEvents();
-    }
+    protected Port() : base("Port") { }
+    protected Port(string name) : base(name) { }
+    protected Port(string name, string description) : base(name, description) { }
 
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
       RegisterValueEvents();
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Port<T>(this, cloner);
     }
 
@@ -101,22 +75,16 @@
       EventHandler handler = ValueChanged;
       if (handler != null) handler(this, EventArgs.Empty);
-      OnItemImageChanged();
       OnToStringChanged();
     }
 
-    private void RegisterValueEvents() {
+    protected virtual void RegisterValueEvents() {
       if (value != null) {
-        value.ItemImageChanged += new EventHandler(Value_ItemImageChanged);
         value.ToStringChanged += new EventHandler(Value_ToStringChanged);
       }
     }
-    private void DeregisterValueEvents() {
+    protected virtual void DeregisterValueEvents() {
       if (value != null) {
-        value.ItemImageChanged -= new EventHandler(Value_ItemImageChanged);
         value.ToStringChanged -= new EventHandler(Value_ToStringChanged);
       }
-    }
-    private void Value_ItemImageChanged(object sender, EventArgs e) {
-      OnItemImageChanged();
     }
     private void Value_ToStringChanged(object sender, EventArgs e) {
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/PortCollection.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/PortCollection.cs	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/PortCollection.cs	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Properties/AssemblyInfo.cs.frame	(revision 11400)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Properties/AssemblyInfo.cs.frame	(revision 11401)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -32,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2013 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2014 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
