Index: trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 3013)
+++ trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 3014)
@@ -48,5 +48,5 @@
     #region Fields & Properties
 
-    public new IObservableKeyedCollection<string, IParameter> Parameters {
+    public new ParameterCollection Parameters {
       get { return base.Parameters; }
     }
@@ -172,9 +172,14 @@
       Assemblies = defaultAssemblyDict;
       Plugins = defaultPluginDict;
-      namespaces = new HashSet<string>(DiscoverNamespaces());      
-      Parameters.ItemsAdded += (s, a) => OnSignatureChanged(s, a);
-      Parameters.ItemsRemoved += (s, a) => OnSignatureChanged(s, a);
-      Parameters.ItemsReplaced += (s, a) => OnSignatureChanged(s, a);
-      Parameters.CollectionReset += (s, a) => OnSignatureChanged(s, a);
+      namespaces = new HashSet<string>(DiscoverNamespaces());
+      RegisterEvents();
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void RegisterEvents() {
+      Parameters.ItemsAdded += OnSignatureChanged;
+      Parameters.ItemsRemoved += OnSignatureChanged;
+      Parameters.ItemsReplaced += OnSignatureChanged;
+      Parameters.CollectionReset += OnSignatureChanged;
     }
 
@@ -421,4 +426,5 @@
       clone.CompilationUnitCode = CompilationUnitCode;
       clone.CompileErrors = CompileErrors;
+      clone.RegisterEvents();
       return clone;
     }
Index: trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 3013)
+++ trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.Designer.cs	(revision 3014)
@@ -55,5 +55,5 @@
       this.tabControl1 = new System.Windows.Forms.TabControl();
       this.tabPage1 = new System.Windows.Forms.TabPage();
-      this.parameterCollectionView1 = new HeuristicLab.Core.Views.ParameterCollectionView();
+      this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
       tabPage2 = new System.Windows.Forms.TabPage();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
@@ -201,5 +201,5 @@
       // tabPage1
       // 
-      this.tabPage1.Controls.Add(this.parameterCollectionView1);
+      this.tabPage1.Controls.Add(this.parameterCollectionView);
       this.tabPage1.Location = new System.Drawing.Point(4, 22);
       this.tabPage1.Name = "tabPage1";
@@ -212,11 +212,11 @@
       // parameterCollectionView1
       // 
-      this.parameterCollectionView1.Caption = "ParameterCollection";
-      this.parameterCollectionView1.Content = null;
-      this.parameterCollectionView1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.parameterCollectionView1.Location = new System.Drawing.Point(3, 3);
-      this.parameterCollectionView1.Name = "parameterCollectionView1";
-      this.parameterCollectionView1.Size = new System.Drawing.Size(971, 613);
-      this.parameterCollectionView1.TabIndex = 0;
+      this.parameterCollectionView.Caption = "ParameterCollection";
+      this.parameterCollectionView.Content = null;
+      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parameterCollectionView.Location = new System.Drawing.Point(3, 3);
+      this.parameterCollectionView.Name = "parameterCollectionView1";
+      this.parameterCollectionView.Size = new System.Drawing.Size(971, 613);
+      this.parameterCollectionView.TabIndex = 0;
       // 
       // ProgrammableOperatorView
@@ -251,5 +251,5 @@
     private System.Windows.Forms.TabControl tabControl1;
     private System.Windows.Forms.TabPage tabPage1;
-    private HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView1;
+    private HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
     private System.Windows.Forms.SplitContainer splitContainer1;
     private HeuristicLab.CodeEditor.CodeEditor codeEditor;
Index: trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
===================================================================
--- trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 3013)
+++ trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 3014)
@@ -78,5 +78,5 @@
         descriptionTextBox.Enabled = false;
         assembliesTreeView.Nodes.Clear();
-        parameterCollectionView1.Content = null;
+        parameterCollectionView.Content = null;
       } else {
         codeEditor.Enabled = true;
@@ -101,5 +101,5 @@
           ProgrammableOperator.CompilationUnitCode != null && 
           ProgrammableOperator.CompilationUnitCode.Length > 0;
-        parameterCollectionView1.Content = ProgrammableOperator.Parameters;        
+        parameterCollectionView.Content = ProgrammableOperator.Parameters;
       }
     }
