Index: trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.cs	(revision 8119)
+++ trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.cs	(revision 8120)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Collections.Generic;
 using System.Windows.Forms;
@@ -42,35 +41,5 @@
     }
 
-    #region Register Content Events
-    protected override void DeregisterContentEvents() {
-      // TODO: Deregister your event handlers on the Content here
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      // TODO: Register your event handlers on the Content here
-    }
-    #endregion
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        // TODO: Put code here when content is null
-      } else {
-        // TODO: Put code here when content has been changed and is not null
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      // TODO: Put code here to enable or disable controls based on whether the Content is/not null or the view is ReadOnly
-    }
-
-    #region Event Handlers
-    // TODO: Put event handlers here
-    #endregion
-
-    #region Child Control Events
-    protected override void addButton_Click(object sender, EventArgs e) {
+    protected override void AddItem() {
       IOptimizer optimizer = CreateItem<IOptimizer>();
       if (optimizer != null) {
@@ -88,21 +57,15 @@
     }
 
-    protected override void removeButton_Click(object sender, EventArgs e) {
-      base.removeButton_Click(sender, e);
-
-      if (treeView.SelectedNode != null) {
-        var selectedItem = (HiveTask)treeView.SelectedNode.Tag;
-        var parentItem = GetParentItem(selectedItem);
-        if (parentItem == null) {
-          Content.Remove((HiveTask)treeView.SelectedNode.Tag);
-        } else {
-          var experiment = parentItem.ItemTask.Item as Experiment;
-          if (experiment != null) {
-            experiment.Optimizers.Remove(((OptimizerTask)selectedItem.ItemTask).Item);
-          }
+    protected override void RemoveItem(HiveTask item) {
+      var parentItem = GetParentItem(item);
+      if (parentItem == null) {
+        Content.Remove(item);
+      } else {
+        var experiment = parentItem.ItemTask.Item as Experiment;
+        if (experiment != null) {
+          experiment.Optimizers.Remove(((OptimizerTask)item.ItemTask).Item);
         }
       }
     }
-    #endregion
 
     protected override ICollection<IItemTreeNodeAction<HiveTask>> GetTreeNodeItemActions(HiveTask selectedItem) {
Index: trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs	(revision 8119)
+++ trunk/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs	(revision 8120)
@@ -36,5 +36,5 @@
   [View("ItemTree View")]
   [Content(typeof(ItemCollection<>), IsDefaultView = false)]
-  public partial class ItemTreeView<T> : ItemView where T : class, IItemTree<T> {
+  public abstract partial class ItemTreeView<T> : ItemView where T : class, IItemTree<T> {
     public new ItemCollection<T> Content {
       get { return (ItemCollection<T>)base.Content; }
@@ -360,14 +360,17 @@
 
     protected virtual void addButton_Click(object sender, EventArgs e) {
-      T item = CreateItem<T>();
-      if (item != null)
-        Content.Add(item);
+      AddItem();
     }
 
     protected virtual void removeButton_Click(object sender, EventArgs e) {
       if (treeView.SelectedNode != null) {
+        RemoveItem(treeView.SelectedNode.Tag as T);
         detailsViewHost.Content = null;
       }
     }
+
+    protected abstract void AddItem();
+
+    protected abstract void RemoveItem(T item);
 
     protected virtual void showDetailsCheckBox_CheckedChanged(object sender, EventArgs e) {
