Index: /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorGroup.cs
===================================================================
--- /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorGroup.cs	(revision 422)
+++ /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorGroup.cs	(revision 423)
@@ -98,6 +98,6 @@
       }
 
-      RecalculateAllowedSuboperators();
-      RecalculateMinimalTreeBounds();
+      //RecalculateAllowedSuboperators();
+      //RecalculateMinimalTreeBounds();
 
       OnOperatorAdded(op);
@@ -291,5 +291,4 @@
       op.RemoveVariable(GPOperatorLibrary.ALLOWED_SUBOPERATORS);
       op.RemoveVariable(GPOperatorLibrary.TICKETS);
-
       OnOperatorRemoved(op);
     }
@@ -312,4 +311,9 @@
       }
     }
+
+    internal void Prepare() {
+      RecalculateAllowedSuboperators();
+      RecalculateMinimalTreeBounds();
+    }
   }
 
Index: /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibrary.cs
===================================================================
--- /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibrary.cs	(revision 422)
+++ /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibrary.cs	(revision 423)
@@ -87,4 +87,8 @@
 
     #endregion
+
+    internal void Prepare() {
+      GPOperatorGroup.Prepare();
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibraryEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibraryEditor.Designer.cs	(revision 422)
+++ /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibraryEditor.Designer.cs	(revision 423)
@@ -54,6 +54,7 @@
       this.mutationTabPage = new System.Windows.Forms.TabPage();
       this.mutationSplitContainer = new System.Windows.Forms.SplitContainer();
+      this.mutationListView = new System.Windows.Forms.ListView();
       this.mutationVariableView = new HeuristicLab.Core.VariableView();
-      this.mutationListView = new System.Windows.Forms.ListView();
+      this.preprocessButton = new System.Windows.Forms.Button();
       this.tabControl.SuspendLayout();
       this.operatorLibraryTabPage.SuspendLayout();
@@ -93,4 +94,5 @@
       // operatorLibraryTabPage
       // 
+      this.operatorLibraryTabPage.Controls.Add(this.preprocessButton);
       this.operatorLibraryTabPage.Controls.Add(this.operatorLibraryEditor);
       this.operatorLibraryTabPage.Location = new System.Drawing.Point(4, 22);
@@ -178,14 +180,4 @@
       this.mutationSplitContainer.SplitterDistance = 221;
       this.mutationSplitContainer.TabIndex = 0;
-      // 
-      // mutationVariableView
-      // 
-      this.mutationVariableView.Caption = "Variable";
-      this.mutationVariableView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.mutationVariableView.Location = new System.Drawing.Point(0, 0);
-      this.mutationVariableView.Name = "mutationVariableView";
-      this.mutationVariableView.Size = new System.Drawing.Size(438, 529);
-      this.mutationVariableView.TabIndex = 0;
-      this.mutationVariableView.Variable = null;
       // 
       // mutationListView
@@ -200,4 +192,25 @@
       this.mutationListView.View = System.Windows.Forms.View.List;
       this.mutationListView.SelectedIndexChanged += new System.EventHandler(this.mutationListView_SelectedIndexChanged);
+      // 
+      // mutationVariableView
+      // 
+      this.mutationVariableView.Caption = "Variable";
+      this.mutationVariableView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.mutationVariableView.Location = new System.Drawing.Point(0, 0);
+      this.mutationVariableView.Name = "mutationVariableView";
+      this.mutationVariableView.Size = new System.Drawing.Size(438, 529);
+      this.mutationVariableView.TabIndex = 0;
+      this.mutationVariableView.Variable = null;
+      // 
+      // preprocessButton
+      // 
+      this.preprocessButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.preprocessButton.Location = new System.Drawing.Point(440, 509);
+      this.preprocessButton.Name = "preprocessButton";
+      this.preprocessButton.Size = new System.Drawing.Size(75, 23);
+      this.preprocessButton.TabIndex = 1;
+      this.preprocessButton.Text = "Prepare";
+      this.preprocessButton.UseVisualStyleBackColor = true;
+      this.preprocessButton.Click += new System.EventHandler(this.preprocessButton_Click);
       // 
       // GPOperatorLibraryEditor
@@ -235,4 +248,5 @@
     private System.Windows.Forms.ListView initListView;
     private System.Windows.Forms.ListView mutationListView;
+    private System.Windows.Forms.Button preprocessButton;
   }
 }
Index: /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibraryEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibraryEditor.cs	(revision 422)
+++ /trunk/sources/HeuristicLab.StructureIdentification/GPOperatorLibraryEditor.cs	(revision 423)
@@ -150,4 +150,8 @@
       }
     }
+
+    private void preprocessButton_Click(object sender, EventArgs e) {
+      ((GPOperatorLibrary)OperatorLibrary).Prepare();
+    }
   }
 }
