Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationProcessChannel.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationProcessChannel.cs	(revision 6469)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationProcessChannel.cs	(revision 6470)
@@ -33,4 +33,5 @@
   public class EvaluationProcessChannel : EvaluationChannel {
 
+    #region Fields & Properties
     private Process process;
     [Storable]
@@ -40,7 +41,8 @@
       set {
         if (IsInitialized) throw new InvalidOperationException(Name + ": Cannot change the executable path as the process has already been started.");
-        string oldExecutable = executable;
+        if (value == executable) return;
         executable = value;
-        if (!oldExecutable.Equals(executable)) OnExecutableChanged();
+        UpdateName();
+        OnExecutableChanged();
       }
     }
@@ -51,11 +53,14 @@
       set {
         if (IsInitialized) throw new InvalidOperationException(Name + ": Cannot change the arguments as the process has already been started.");
-        string oldArguments = arguments;
+        if (value == arguments) return;
         arguments = value;
-        if (!oldArguments.Equals(arguments)) OnArgumentsChanged();
+        UpdateName();
+        OnArgumentsChanged();
       }
     }
     private EvaluationStreamChannel streamingChannel;
+    #endregion
 
+    #region Construction & Cloning
     [StorableConstructor]
     protected EvaluationProcessChannel(bool deserializing) : base(deserializing) { }
@@ -64,4 +69,5 @@
       executable = original.executable;
       arguments = original.arguments;
+      UpdateName();
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -74,8 +80,13 @@
       this.executable = executable;
       this.arguments = arguments;
+      UpdateName();
     }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      UpdateName();
+    }
+    #endregion
 
     #region IExternalEvaluationChannel Members
-
     public override void Open() {
       if (!String.IsNullOrEmpty(executable.Trim())) {
@@ -175,4 +186,11 @@
     }
     #endregion
+
+    #region Auxiliary Methods
+    private void UpdateName() {
+      name = string.Format("ProcessChannel {0} {1}", Path.GetFileNameWithoutExtension(executable), arguments);
+      OnNameChanged();
+    }
+    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationServiceClient.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationServiceClient.cs	(revision 6469)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationServiceClient.cs	(revision 6470)
@@ -31,7 +31,9 @@
   [StorableClass]
   public class EvaluationServiceClient : ParameterizedNamedItem, IEvaluationServiceClient {
+
     public override bool CanChangeName { get { return false; } }
     public override bool CanChangeDescription { get { return false; } }
 
+    #region Parameters
     public IValueParameter<IEvaluationChannel> ChannelParameter {
       get { return (IValueParameter<IEvaluationChannel>)Parameters["Channel"]; }
@@ -44,20 +46,30 @@
       get { return ChannelParameter.Value; }
     }
+    #endregion
 
 
+    #region Construction & Cloning
     [StorableConstructor]
     protected EvaluationServiceClient(bool deserializing) : base(deserializing) { }
-    protected EvaluationServiceClient(EvaluationServiceClient original, Cloner cloner) : base(original, cloner) { }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new EvaluationServiceClient(this, cloner);
-    }
+    protected EvaluationServiceClient(EvaluationServiceClient original, Cloner cloner) : base(original, cloner) {
+      RegisterEvents();
+    }    
     public EvaluationServiceClient()
       : base() {
       Parameters.Add(new ValueParameter<IEvaluationChannel>("Channel", "The channel over which to call the remote function."));
       Parameters.Add(new ValueParameter<IntValue>("Retry", "How many times the client should retry obtaining a quality in case there is an exception. Note that it immediately aborts when the channel cannot be opened.", new IntValue(10)));
+      RegisterEvents();
     }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new EvaluationServiceClient(this, cloner);
+    }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      ChannelParameter_ValueChanged(this, EventArgs.Empty);
+      RegisterEvents();
+    }
+    #endregion
 
     #region IEvaluationServiceClient Members
-
     public QualityMessage Evaluate(SolutionMessage solution) {
       int tries = 0, maxTries = RetryParameter.Value.Value;
@@ -103,7 +115,7 @@
       System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveAsync), callback);
     }
-
     #endregion
 
+    #region Auxiliary Methods
     private void CheckAndOpenChannel() {
       if (Channel == null) throw new InvalidOperationException(Name + ": The channel is not defined.");
@@ -126,4 +138,17 @@
       ((Action<QualityMessage>)callback).Invoke(message);
     }
+
+    private void RegisterEvents() {
+      ChannelParameter.ValueChanged += new EventHandler(ChannelParameter_ValueChanged);
+    }
+
+    void ChannelParameter_ValueChanged(object sender, EventArgs e) {
+      if (ChannelParameter.Value == null)
+        name = "Empty EvaluationServiceClient";
+      else
+        name = String.Format("{0} ServiceClient", ChannelParameter.Value.Name);
+      OnNameChanged();
+    }
+    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationTCPChannel.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationTCPChannel.cs	(revision 6469)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/EvaluationTCPChannel.cs	(revision 6470)
@@ -32,6 +32,8 @@
   [StorableClass]
   public class EvaluationTCPChannel : EvaluationChannel {
+
     public const int MAX_VARINT32_SIZE = 5;
 
+    #region Fields & Properties
     [Storable]
     private string ipAddress;
@@ -39,8 +41,8 @@
       get { return ipAddress; }
       set {
-        bool changed = !ipAddress.Equals(value);
+        if (value == ipAddress) return;
         ipAddress = value;
-        if (changed)
-          OnIpAddressChanged();
+        UpdateName();
+        OnIpAddressChanged();
       }
     }
@@ -50,12 +52,14 @@
       get { return port; }
       set {
-        bool changed = port != value;
+        if (value == port) return;
         port = value;
-        if (changed)
-          OnPortChanged();
+        UpdateName();
+        OnPortChanged();
       }
     }
     private Socket socket;
-
+    #endregion
+
+    #region Construction & Cloning
     [StorableConstructor]
     protected EvaluationTCPChannel(bool deserializing) : base(deserializing) { }
@@ -64,5 +68,7 @@
       ipAddress = original.ipAddress;
       port = original.port;
-    }
+      UpdateName();
+    }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new EvaluationTCPChannel(this, cloner);
@@ -74,5 +80,13 @@
       this.ipAddress = ip;
       this.port = port;
-    }
+      UpdateName();
+    }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      UpdateName();
+    }
+    #endregion
+
+    
 
     #region IExternalEvaluationChannel Members
@@ -183,4 +197,11 @@
     #endregion
 
+    #region Auxiliary Methods
+    private void UpdateName() {
+      name = string.Format("TCPChannel {0}:{1}", ipAddress, port);
+      OnNameChanged();
+    }
+    #endregion
+
     #region Events
     public event EventHandler IpAddressChanged;
Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Interfaces/IEvaluationChannel.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Interfaces/IEvaluationChannel.cs	(revision 6469)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Interfaces/IEvaluationChannel.cs	(revision 6470)
@@ -24,5 +24,5 @@
 
 namespace HeuristicLab.Problems.ExternalEvaluation {
-  public interface IEvaluationChannel : IItem {
+  public interface IEvaluationChannel : INamedItem {
     /// <summary>
     /// A flag that describes whether the channel has been initialized or not.
