Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs	(revision 11345)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs	(revision 11346)
@@ -101,5 +101,5 @@
     private void RegisterEventHandlers() {
       Tasks.ItemsAdded += TasksOnItemsChanged;
-      Tasks.ItemsRemoved += TasksOnItemsChanged;
+      Tasks.ItemsRemoved += TasksOnItemsRemoved;
       Tasks.ItemsReplaced += TasksOnItemsChanged;
       Tasks.CollectionReset += TasksOnItemsChanged;
@@ -118,4 +118,13 @@
         task.Value.PropertyChanged += TaskOnPropertyChanged;
         task.Value.ToStringChanged += TaskOnToStringChanged;
+      }
+      OnTasksChanged();
+      OnToStringChanged();
+    }
+
+    private void TasksOnItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Task>> e) {
+      foreach (var task in e.Items) {
+        task.Value.PropertyChanged -= TaskOnPropertyChanged;
+        task.Value.ToStringChanged -= TaskOnToStringChanged;
       }
       OnTasksChanged();
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/VariableConditionView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/VariableConditionView.cs	(revision 11345)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/VariableConditionView.cs	(revision 11346)
@@ -54,5 +54,5 @@
     private void RegisterVariableNamesViewContentEvents() {
       variableNamesView.Content.ItemsAdded += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
-      variableNamesView.Content.ItemsRemoved += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
+      variableNamesView.Content.ItemsRemoved += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Removed);
       variableNamesView.Content.CheckedItemsChanged += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
       variableNamesView.Content.CollectionReset += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
@@ -64,5 +64,5 @@
     private void DeregisterVariableNamesViewContentEvents() {
       variableNamesView.Content.ItemsAdded -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
-      variableNamesView.Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
+      variableNamesView.Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Removed);
       variableNamesView.Content.CheckedItemsChanged -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
       variableNamesView.Content.CollectionReset -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
@@ -153,4 +153,10 @@
     }
 
+    private void VariableNames_Removed(object sender, CollectionItemsChangedEventArgs<StringValue> e) {
+      foreach (var newVar in e.Items)
+        newVar.ValueChanged -= new EventHandler(Variable_ValueChanged);
+      UpdateContent();
+    }
+
     private void Variable_ValueChanged(object sender, EventArgs e) {
       UpdateContent();
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/VariableView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/VariableView.cs	(revision 11345)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/VariableView.cs	(revision 11346)
@@ -55,5 +55,5 @@
     private void RegisterVariableNamesViewContentEvents() {
       variableNamesView.Content.ItemsAdded += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
-      variableNamesView.Content.ItemsRemoved += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
+      variableNamesView.Content.ItemsRemoved += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Removed);
       variableNamesView.Content.CheckedItemsChanged += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
       variableNamesView.Content.CollectionReset += new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
@@ -66,5 +66,5 @@
     private void DeregisterVariableNamesViewContentEvents() {
       variableNamesView.Content.ItemsAdded -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
-      variableNamesView.Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
+      variableNamesView.Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Removed);
       variableNamesView.Content.CheckedItemsChanged -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
       variableNamesView.Content.CollectionReset -= new CollectionItemsChangedEventHandler<StringValue>(VariableNames_Changed);
@@ -118,4 +118,10 @@
     }
 
+    private void VariableNames_Removed(object sender, CollectionItemsChangedEventArgs<StringValue> e) {
+      foreach (var newVar in e.Items)
+        newVar.ValueChanged -= new EventHandler(Variable_ValueChanged);
+      UpdateContent();
+    }
+
     private void Variable_ValueChanged(object sender, EventArgs e) {
       UpdateContent();
Index: trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs	(revision 11345)
+++ trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs	(revision 11346)
@@ -52,5 +52,5 @@
       Content.JobDataParameter.ValueChanged -= JobDataParameterOnValueChanged;
       Content.JobData.ItemsAdded -= JobsOnChanged;
-      Content.JobData.ItemsRemoved -= JobsOnChanged;
+      Content.JobData.ItemsRemoved -= JobsOnRemoved;
       Content.JobData.ItemsReplaced -= JobsOnChanged;
       Content.JobData.CollectionReset -= JobsOnChanged;
@@ -64,5 +64,5 @@
       Content.JobDataParameter.ValueChanged += JobDataParameterOnValueChanged;
       Content.JobData.ItemsAdded += JobsOnChanged;
-      Content.JobData.ItemsRemoved += JobsOnChanged;
+      Content.JobData.ItemsRemoved += JobsOnRemoved;
       Content.JobData.ItemsReplaced += JobsOnChanged;
       Content.JobData.CollectionReset += JobsOnChanged;
@@ -80,7 +80,13 @@
     }
 
+    private void JobsOnRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Job>> e) {
+      foreach (var job in e.Items)
+        job.Value.TasksChanged -= JobOnTasksChanged;
+      FillGanttChart();
+    }
+
     private void JobDataParameterOnValueChanged(object sender, EventArgs e) {
       Content.JobData.ItemsAdded += JobsOnChanged;
-      Content.JobData.ItemsRemoved += JobsOnChanged;
+      Content.JobData.ItemsRemoved += JobsOnRemoved;
       Content.JobData.ItemsReplaced += JobsOnChanged;
       Content.JobData.CollectionReset += JobsOnChanged;
