Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/MessagePortView.Designer.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/MessagePortView.Designer.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/MessagePortView.Designer.cs	(revision 11538)
@@ -38,10 +38,10 @@
       this.clearConnectedPortButton = new System.Windows.Forms.Button();
       this.connectedPortView = new HeuristicLab.Core.Networks.Views.PortView();
-      this.cloneConnectedPortParametersButton = new System.Windows.Forms.Button();
+      this.cloneParametersFromPortButton = new System.Windows.Forms.Button();
       this.sendMessageButton = new System.Windows.Forms.Button();
       this.splitContainer = new System.Windows.Forms.SplitContainer();
       this.portParameterCollectionView = new HeuristicLab.Core.Networks.Views.PortParameterCollectionView();
-      this.messageCollectionView = new HeuristicLab.Core.Networks.Views.MessageCollectionView();
-      this.logMessagesCheckBox = new System.Windows.Forms.CheckBox();
+      this.lastMessageGroupBox = new System.Windows.Forms.GroupBox();
+      this.lastMessageView = new HeuristicLab.Core.Networks.Views.MessageView();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.connectedPortGroupBox.SuspendLayout();
@@ -50,4 +50,5 @@
       this.splitContainer.Panel2.SuspendLayout();
       this.splitContainer.SuspendLayout();
+      this.lastMessageGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -112,14 +113,14 @@
       this.connectedPortView.DragOver += new System.Windows.Forms.DragEventHandler(this.connectedPortView_DragEnterOver);
       // 
-      // cloneConnectedPortParametersButton
-      // 
-      this.cloneConnectedPortParametersButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Clone;
-      this.cloneConnectedPortParametersButton.Location = new System.Drawing.Point(156, 101);
-      this.cloneConnectedPortParametersButton.Name = "cloneConnectedPortParametersButton";
-      this.cloneConnectedPortParametersButton.Size = new System.Drawing.Size(24, 24);
-      this.cloneConnectedPortParametersButton.TabIndex = 5;
-      this.toolTip.SetToolTip(this.cloneConnectedPortParametersButton, "Clone Parameters from Connected Port");
-      this.cloneConnectedPortParametersButton.UseVisualStyleBackColor = true;
-      this.cloneConnectedPortParametersButton.Click += new System.EventHandler(this.cloneConnectedPortParametersButton_Click);
+      // cloneParametersFromPortButton
+      // 
+      this.cloneParametersFromPortButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Clone;
+      this.cloneParametersFromPortButton.Location = new System.Drawing.Point(156, 101);
+      this.cloneParametersFromPortButton.Name = "cloneParametersFromPortButton";
+      this.cloneParametersFromPortButton.Size = new System.Drawing.Size(24, 24);
+      this.cloneParametersFromPortButton.TabIndex = 5;
+      this.toolTip.SetToolTip(this.cloneParametersFromPortButton, "Clone parameters from another port");
+      this.cloneParametersFromPortButton.UseVisualStyleBackColor = true;
+      this.cloneParametersFromPortButton.Click += new System.EventHandler(this.cloneParametersFromPortButton_Click);
       // 
       // sendMessageButton
@@ -149,6 +150,5 @@
       // splitContainer.Panel2
       // 
-      this.splitContainer.Panel2.Controls.Add(this.logMessagesCheckBox);
-      this.splitContainer.Panel2.Controls.Add(this.messageCollectionView);
+      this.splitContainer.Panel2.Controls.Add(this.lastMessageGroupBox);
       this.splitContainer.Size = new System.Drawing.Size(645, 435);
       this.splitContainer.SplitterDistance = 218;
@@ -167,26 +167,25 @@
       this.portParameterCollectionView.TabIndex = 0;
       // 
-      // messageCollectionView
-      // 
-      this.messageCollectionView.Caption = "MessageCollection View";
-      this.messageCollectionView.Content = null;
-      this.messageCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.messageCollectionView.Location = new System.Drawing.Point(0, 0);
-      this.messageCollectionView.Name = "messageCollectionView";
-      this.messageCollectionView.ReadOnly = false;
-      this.messageCollectionView.ShowDetails = true;
-      this.messageCollectionView.Size = new System.Drawing.Size(645, 213);
-      this.messageCollectionView.TabIndex = 0;
-      // 
-      // logMessagesCheckBox
-      // 
-      this.logMessagesCheckBox.AutoSize = true;
-      this.logMessagesCheckBox.Location = new System.Drawing.Point(156, 24);
-      this.logMessagesCheckBox.Name = "logMessagesCheckBox";
-      this.logMessagesCheckBox.Size = new System.Drawing.Size(95, 17);
-      this.logMessagesCheckBox.TabIndex = 1;
-      this.logMessagesCheckBox.Text = "&Log Messages";
-      this.logMessagesCheckBox.UseVisualStyleBackColor = true;
-      this.logMessagesCheckBox.CheckedChanged += new System.EventHandler(this.logMessagesCheckBox_CheckedChanged);
+      // lastMessageGroupBox
+      // 
+      this.lastMessageGroupBox.Controls.Add(this.lastMessageView);
+      this.lastMessageGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lastMessageGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.lastMessageGroupBox.Name = "lastMessageGroupBox";
+      this.lastMessageGroupBox.Size = new System.Drawing.Size(645, 213);
+      this.lastMessageGroupBox.TabIndex = 0;
+      this.lastMessageGroupBox.TabStop = false;
+      this.lastMessageGroupBox.Text = "Last Message";
+      // 
+      // lastMessageView
+      // 
+      this.lastMessageView.Caption = "Message View";
+      this.lastMessageView.Content = null;
+      this.lastMessageView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lastMessageView.Location = new System.Drawing.Point(3, 16);
+      this.lastMessageView.Name = "lastMessageView";
+      this.lastMessageView.ReadOnly = true;
+      this.lastMessageView.Size = new System.Drawing.Size(639, 194);
+      this.lastMessageView.TabIndex = 0;
       // 
       // MessagePortView
@@ -194,5 +193,5 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Controls.Add(this.sendMessageButton);
-      this.Controls.Add(this.cloneConnectedPortParametersButton);
+      this.Controls.Add(this.cloneParametersFromPortButton);
       this.Controls.Add(this.connectedPortGroupBox);
       this.Controls.Add(this.splitContainer);
@@ -203,5 +202,5 @@
       this.Controls.SetChildIndex(this.infoLabel, 0);
       this.Controls.SetChildIndex(this.connectedPortGroupBox, 0);
-      this.Controls.SetChildIndex(this.cloneConnectedPortParametersButton, 0);
+      this.Controls.SetChildIndex(this.cloneParametersFromPortButton, 0);
       this.Controls.SetChildIndex(this.sendMessageButton, 0);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
@@ -209,7 +208,7 @@
       this.splitContainer.Panel1.ResumeLayout(false);
       this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.Panel2.PerformLayout();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
       this.splitContainer.ResumeLayout(false);
+      this.lastMessageGroupBox.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -223,10 +222,10 @@
     protected System.Windows.Forms.Button clearConnectedPortButton;
     protected System.Windows.Forms.Button setConnectedPortButton;
-    protected System.Windows.Forms.Button cloneConnectedPortParametersButton;
+    protected System.Windows.Forms.Button cloneParametersFromPortButton;
     protected System.Windows.Forms.Button sendMessageButton;
     protected System.Windows.Forms.SplitContainer splitContainer;
     protected PortParameterCollectionView portParameterCollectionView;
-    protected MessageCollectionView messageCollectionView;
-    protected System.Windows.Forms.CheckBox logMessagesCheckBox;
+    protected System.Windows.Forms.GroupBox lastMessageGroupBox;
+    protected MessageView lastMessageView;
 
 
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/MessagePortView.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/MessagePortView.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/MessagePortView.cs	(revision 11538)
@@ -54,5 +54,5 @@
       Content.ConnectedPortChanged -= Content_ConnectedPortChanged;
       Content.PortConnectionValidChanged -= Content_PortConnectionValidChanged;
-      Content.LogMessagesChanged -= Content_LogMessagesChanged;
+      Content.LastMessageChanged -= Content_LastMessageChanged;
       base.DeregisterContentEvents();
     }
@@ -61,5 +61,5 @@
       Content.ConnectedPortChanged += Content_ConnectedPortChanged;
       Content.PortConnectionValidChanged += Content_PortConnectionValidChanged;
-      Content.LogMessagesChanged += Content_LogMessagesChanged;
+      Content.LastMessageChanged += Content_LastMessageChanged;
     }
 
@@ -69,6 +69,5 @@
       connectedPortView.Content = Content == null ? null : Content.ConnectedPort;
       portParameterCollectionView.Content = Content == null ? null : Content.Parameters;
-      logMessagesCheckBox.Checked = Content == null ? false : Content.LogMessages;
-      messageCollectionView.Content = Content == null ? null : Content.Messages;
+      lastMessageView.Content = Content == null ? null : Content.LastMessage;
       errorProvider.SetError(connectedPortView, ((Content == null) || Content.PortConnectionValid) ? string.Empty : "Port connection is not valid");
     }
@@ -81,7 +80,6 @@
       clearConnectedPortButton.Enabled = Content != null && Content.ConnectedPort != null && !ReadOnly;
       portParameterCollectionView.Enabled = Content != null && !ReadOnly;
-      cloneConnectedPortParametersButton.Enabled = Content != null && Content.ConnectedPort != null && !ReadOnly;
-      logMessagesCheckBox.Enabled = Content != null && !ReadOnly;
-      messageCollectionView.Enabled = Content != null && !ReadOnly;
+      cloneParametersFromPortButton.Enabled = Content != null && Content.ConnectedPort != null && !ReadOnly;
+      lastMessageView.Enabled = Content != null && !ReadOnly;
     }
 
@@ -91,5 +89,5 @@
       else {
         clearConnectedPortButton.Enabled = Content.ConnectedPort != null && !ReadOnly;
-        cloneConnectedPortParametersButton.Enabled = Content.ConnectedPort != null && !ReadOnly;
+        cloneParametersFromPortButton.Enabled = Content.ConnectedPort != null && !ReadOnly;
         connectedPortView.Content = Content.ConnectedPort;
       }
@@ -102,9 +100,9 @@
       }
     }
-    protected virtual void Content_LogMessagesChanged(object sender, EventArgs e) {
+    protected virtual void Content_LastMessageChanged(object sender, EventArgs e) {
       if (InvokeRequired)
-        Invoke(new EventHandler(Content_LogMessagesChanged), sender, e);
+        Invoke(new EventHandler(Content_LastMessageChanged), sender, e);
       else {
-        logMessagesCheckBox.Checked = Content.LogMessages;
+        lastMessageView.Content = Content.LastMessage;
       }
     }
@@ -115,9 +113,7 @@
 
     protected virtual void setConnectedPortButton_Click(object sender, EventArgs e) {
-      if (networkItemSelectorDialog == null) {
-        networkItemSelectorDialog = new NetworkItemSelectorDialog();
-        networkItemSelectorDialog.Caption = "Select Connected Port";
-        networkItemSelectorDialog.NetworkItemSelector.Caption = "Available Ports";
-      }
+      if (networkItemSelectorDialog == null) networkItemSelectorDialog = new NetworkItemSelectorDialog();
+      networkItemSelectorDialog.Caption = "Select Connected Port";
+      networkItemSelectorDialog.NetworkItemSelector.Caption = "Available Ports";
 
       try {
@@ -145,5 +141,5 @@
     protected virtual void connectedPortView_DragEnterOver(object sender, DragEventArgs e) {
       e.Effect = DragDropEffects.None;
-      var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) as IMessagePort;
+      var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) as IPort;
 
       if (!ReadOnly && (data != null) && (Content.CanConnectToPort(data))) {
@@ -157,9 +153,21 @@
       }
     }
-    protected virtual void cloneConnectedPortParametersButton_Click(object sender, EventArgs e) {
-      Content.CloneParametersFromPort(Content.ConnectedPort);
-    }
-    protected virtual void logMessagesCheckBox_CheckedChanged(object sender, EventArgs e) {
-      Content.LogMessages = logMessagesCheckBox.Checked;
+    protected virtual void cloneParametersFromPortButton_Click(object sender, EventArgs e) {
+      if (networkItemSelectorDialog == null) networkItemSelectorDialog = new NetworkItemSelectorDialog();
+      networkItemSelectorDialog.Caption = "Select Port to Clone Parameters from";
+      networkItemSelectorDialog.NetworkItemSelector.Caption = "Available Ports";
+
+      INetworkItem root = Content;
+      while (root.Parent != null)
+        root = root.Parent;
+      networkItemSelectorDialog.NetworkItemSelector.Configure(
+        root,
+        null,
+        typeof(IParameterizedPort)
+      );
+
+      if (networkItemSelectorDialog.ShowDialog(this) == DialogResult.OK) {
+        Content.CloneParametersFromPort(networkItemSelectorDialog.NetworkItemSelector.SelectedNetworkItem as IParameterizedPort);
+      }
     }
   }
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/NetworkItemView.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/NetworkItemView.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks.Views/3.3/Core.Networks.Views/NetworkItemView.cs	(revision 11538)
@@ -22,5 +22,4 @@
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
-using System;
 using System.Windows.Forms;
 
@@ -38,26 +37,4 @@
       InitializeComponent();
     }
-
-    protected override void DeregisterContentEvents() {
-      Content.PathChanged -= Content_PathChanged;
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.PathChanged += Content_PathChanged;
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      toolTip.SetToolTip(nameTextBox, Content != null ? Content.Path : string.Empty);
-    }
-
-    protected virtual void Content_PathChanged(object sender, System.EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_PathChanged), sender, e);
-      else {
-        toolTip.SetToolTip(nameTextBox, Content != null ? Content.Path : string.Empty);
-      }
-    }
   }
 }
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/IConnectablePort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/IConnectablePort.cs	(revision 11538)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/IConnectablePort.cs	(revision 11538)
@@ -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 System;
+
+namespace HeuristicLab.Core.Networks {
+  public interface IConnectablePort : IPort {
+    IPort ConnectedPort { get; set; }
+    bool PortConnectionValid { get; }
+
+    bool CanConnectToPort(IPort port);
+
+    event EventHandler ConnectedPortChanged;
+    event EventHandler PortConnectionValidChanged;
+  }
+}
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/IMessagePort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/IMessagePort.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/IMessagePort.cs	(revision 11538)
@@ -26,15 +26,9 @@
 
 namespace HeuristicLab.Core.Networks {
-  public interface IMessagePort : IParameterizedPort {
-    IMessagePort ConnectedPort { get; set; }
-    bool PortConnectionValid { get; }
-    bool LogMessages { get; set; }
-    MessageCollection Messages { get; }
+  public interface IMessagePort : IParameterizedPort, IConnectablePort {
+    new IMessagePort ConnectedPort { get; set; }
 
-    bool CanConnectToPort(IPort port);
-
-    event EventHandler ConnectedPortChanged;
-    event EventHandler PortConnectionValidChanged;
-    event EventHandler LogMessagesChanged;
+    IMessage LastMessage { get; }
+    event EventHandler LastMessageChanged;
 
     IMessage PrepareMessage();
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/INetworkItem.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/INetworkItem.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/INetworkItem.cs	(revision 11538)
@@ -27,6 +27,4 @@
     INetworkItem Parent { get; }
     IEnumerable<INetworkItem> Children { get; }
-    string Path { get; }
-    event EventHandler PathChanged;
   }
 }
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/MessagePort.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/MessagePort.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/MessagePort.cs	(revision 11538)
@@ -54,6 +54,14 @@
           RegisterConnectedPortEvents();
           OnConnectedPortChanged();
-          OnInterfaceChanged();
-        }
+          CheckPortConnection();
+        }
+      }
+    }
+    IPort IConnectablePort.ConnectedPort {
+      get { return ConnectedPort; }
+      set {
+        if (!(value is IMessagePort))
+          throw new InvalidOperationException("Type mismatch. ConnectedPort is not an IMessagePort.");
+        ConnectedPort = (IMessagePort)value;
       }
     }
@@ -71,18 +79,13 @@
     }
     [Storable]
-    protected bool logMessages;
-    public bool LogMessages {
-      get { return logMessages; }
-      set {
-        if (value != logMessages) {
-          logMessages = value;
-          OnLogMessagesChanged();
-        }
-      }
-    }
-    [Storable]
-    protected MessageCollection messages;
-    public MessageCollection Messages {
-      get { return messages; }
+    protected IMessage lastMessage;
+    public IMessage LastMessage {
+      get { return lastMessage; }
+      protected set {
+        if (value != lastMessage) {
+          lastMessage = value;
+          OnLastMessageChanged();
+        }
+      }
     }
 
@@ -93,6 +96,5 @@
       connectedPort = cloner.Clone(original.connectedPort);
       portConnectionValid = original.portConnectionValid;
-      logMessages = original.logMessages;
-      messages = cloner.Clone(original.messages);
+      lastMessage = null;
       RegisterConnectedPortEvents();
     }
@@ -100,18 +102,15 @@
       : base("MessagePort") {
       portConnectionValid = true;
-      logMessages = false;
-      messages = new MessageCollection();
+      lastMessage = null;
     }
     public MessagePort(string name)
       : base(name) {
       portConnectionValid = true;
-      logMessages = false;
-      messages = new MessageCollection();
+      lastMessage = null;
     }
     public MessagePort(string name, string description)
       : base(name, description) {
       portConnectionValid = true;
-      logMessages = false;
-      messages = new MessageCollection();
+      lastMessage = null;
     }
 
@@ -126,15 +125,5 @@
 
     public bool CanConnectToPort(IPort port) {
-      if (port == null) return true;
-
-      var p = port as IMessagePort;
-      if (p == null) return false;
-
-      // check if the local parameters are compatible to the input parameters of the port
-      if (!ParametersCompatibleToTarget(Parameters, p.Parameters)) return false;
-      // check if the parameters of the port are compatible to the local input parameters
-      if (!ParametersCompatibleToTarget(p.Parameters, Parameters)) return false;
-
-      return true;
+      return (port == null) || (port is IMessagePort);
     }
 
@@ -162,5 +151,5 @@
     public void SendMessage(IMessage message, CancellationToken token) {
       if (!PortConnectionValid) throw new InvalidOperationException("Port connection is not valid");
-      if (LogMessages) Messages.Add(message);
+      LastMessage = message;
       if (ConnectedPort != null) ConnectedPort.ReceiveMessage(message, token);
       OnMessageSent(message, token);
@@ -180,5 +169,5 @@
     public void ReceiveMessage(IMessage message, CancellationToken token) {
       if (!PortConnectionValid) throw new InvalidOperationException("Port connection is not valid");
-      if (LogMessages) Messages.Add(message);
+      LastMessage = message;
       OnMessageReceived(message, token);
     }
@@ -199,12 +188,12 @@
       if (handler != null) handler(this, EventArgs.Empty);
     }
-    public event EventHandler LogMessagesChanged;
-    protected virtual void OnLogMessagesChanged() {
-      var handler = LogMessagesChanged;
+    public event EventHandler LastMessageChanged;
+    protected virtual void OnLastMessageChanged() {
+      var handler = LastMessageChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
 
     protected override void OnInterfaceChanged() {
-      PortConnectionValid = CanConnectToPort(connectedPort);
+      CheckPortConnection();
       base.OnInterfaceChanged();
     }
@@ -224,5 +213,5 @@
     }
     protected virtual void ConnectedPort_InterfaceChanged(object sender, EventArgs e) {
-      OnInterfaceChanged();
+      CheckPortConnection();
     }
     protected virtual void ConnectedPort_MessageSent(object sender, EventArgs<IMessage, CancellationToken> e) {
@@ -232,4 +221,9 @@
 
     #region Helpers
+    protected virtual void CheckPortConnection() {
+      PortConnectionValid = (ConnectedPort == null) ||
+                            (ParametersCompatibleToTarget(Parameters, ConnectedPort.Parameters) &&
+                             ParametersCompatibleToTarget(ConnectedPort.Parameters, Parameters));
+    }
     protected virtual bool ParametersCompatibleToTarget(IEnumerable<IPortParameter> source, IEnumerable<IPortParameter> target) {
       // checks if the source parameters are compatible to the input parameters of the target
Index: /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/NetworkItem.cs
===================================================================
--- /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/NetworkItem.cs	(revision 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/Core.Networks/NetworkItem.cs	(revision 11538)
@@ -31,5 +31,4 @@
   [StorableClass]
   public abstract class NetworkItem : NamedItem, INetworkItem {
-    public static readonly string PathSeparator = " => ";
     public static new Image StaticItemImage {
       get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
@@ -41,8 +40,5 @@
       protected set {
         if (value != parent) {
-          DeregisterParentEvents();
           parent = value;
-          RegisterParentEvents();
-          OnPathChanged();
         }
       }
@@ -50,9 +46,4 @@
     public virtual IEnumerable<INetworkItem> Children {
       get { return Enumerable.Empty<INetworkItem>(); }
-    }
-    public string Path {
-      get {
-        return parent != null ? parent.Path + PathSeparator + Name : Name;
-      }
     }
 
@@ -63,35 +54,4 @@
     protected NetworkItem(string name) : base(name) { }
     protected NetworkItem(string name, string description) : base(name, description) { }
-
-    protected override void OnNameChanging(CancelEventArgs<string> e) {
-      base.OnNameChanging(e);
-      e.Cancel = e.Cancel || e.Value.Contains(PathSeparator);
-    }
-    protected override void OnNameChanged() {
-      base.OnNameChanged();
-      OnPathChanged();
-    }
-
-    public event EventHandler PathChanged;
-    protected virtual void OnPathChanged() {
-      var handler = PathChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    #region Parent Events
-    protected virtual void RegisterParentEvents() {
-      if (parent != null) {
-        parent.PathChanged += Parent_PathChanged;
-      }
-    }
-    protected virtual void DeregisterParentEvents() {
-      if (parent != null) {
-        parent.PathChanged -= Parent_PathChanged;
-      }
-    }
-    void Parent_PathChanged(object sender, EventArgs e) {
-      OnPathChanged();
-    }
-    #endregion
   }
 }
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 11537)
+++ /branches/OptimizationNetworks/HeuristicLab.Optimization.Networks/3.3/HeuristicLab.Optimization.Networks-3.3.csproj	(revision 11538)
@@ -90,4 +90,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Core.Networks\IConnectablePort.cs" />
     <Compile Include="Core.Networks\IUserDefinedMessagePort.cs" />
     <Compile Include="Core.Networks\IMessagePort.cs" />
