Index: branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj
===================================================================
--- branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj	(revision 8660)
+++ branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers-3.3.csproj	(revision 8661)
@@ -117,4 +117,5 @@
   <ItemGroup>
     <Compile Include="AlgorithmBehaviorHelpers.cs" />
+    <Compile Include="VariableRemover.cs" />
     <Compile Include="LinearLeastSquaresFitting.cs" />
     <Compile Include="RunCollectionStatisticalTabularView.cs">
Index: branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs
===================================================================
--- branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs	(revision 8660)
+++ branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs	(revision 8661)
@@ -129,25 +129,27 @@
       var permutationAfter = PermutationAfterMutationParameter.ActualValue;
 
-      qualityPlotHelper.InitializePlot(Results, "Mutation Quality", "Solution Index", "Absolut Quality Difference");
-      diversityPlotHelper.InitializePlot(Results, "Mutation Diversity", "Solution Index", "Diversity");
-      avgDataTableHelper.InitializeChart(Results, "Average Mutation Performance", "Average Mutation Performance per Generation");
+      if (permutationBefore != null) {
+        qualityPlotHelper.InitializePlot(Results, "Mutation Quality", "Solution Index", "Absolut Quality Difference");
+        diversityPlotHelper.InitializePlot(Results, "Mutation Diversity", "Solution Index", "Diversity");
+        avgDataTableHelper.InitializeChart(Results, "Average Mutation Performance", "Average Mutation Performance per Generation");
 
-      divPoint = new Point2D<double>(cnt, TSPSimilarityCalculator.CalculateSimilarity(permutationBefore, permutationAfter));
-      curPoint = new Point2D<double>(cnt++, qualityCX - qualityM);
-      qualityPoints.Add(curPoint.Y);
+        divPoint = new Point2D<double>(cnt, TSPSimilarityCalculator.CalculateSimilarity(permutationBefore, permutationAfter));
+        curPoint = new Point2D<double>(cnt++, qualityCX - qualityM);
+        qualityPoints.Add(curPoint.Y);
 
-      string curGenStr = GenerationsParameter.ActualValue.Value.ToString();
+        string curGenStr = GenerationsParameter.ActualValue.Value.ToString();
 
-      qualityPlotHelper.AddPoint(curGenStr, curPoint);
-      diversityPlotHelper.AddPoint(curGenStr, divPoint);
+        qualityPlotHelper.AddPoint(curGenStr, curPoint);
+        diversityPlotHelper.AddPoint(curGenStr, divPoint);
 
-      if (GenerationsParameter.ActualValue.Value != 0) {
-        if (GenerationsParameter.ActualValue.Value > lastGeneration) {
-          double avg = qualityPoints.Average();
-          avgDataTableHelper.AddPoint(avg);
+        if (GenerationsParameter.ActualValue.Value != 0) {
+          if (GenerationsParameter.ActualValue.Value > lastGeneration) {
+            double avg = qualityPoints.Average();
+            avgDataTableHelper.AddPoint(avg);
+            Reset();
+          }
+        } else {
           Reset();
         }
-      } else {
-        Reset();
       }
 
Index: branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/VariableRemover.cs
===================================================================
--- branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/VariableRemover.cs	(revision 8661)
+++ branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/VariableRemover.cs	(revision 8661)
@@ -0,0 +1,65 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Analysis.AlgorithmBehavior.Analyzers {
+  [Item("VariableRemover", "An operator that removes variables.")]
+  [StorableClass]
+  public class VariableRemover : SingleSuccessorOperator {
+
+    #region Parameter properties
+    public IValueParameter<StringValue> VariableNameParameter {
+      get { return (ValueParameter<StringValue>)Parameters["VariableName"]; }
+    }
+    private ScopeParameter CurrentScopeParameter {
+      get { return (ScopeParameter)Parameters["CurrentScope"]; }
+    }
+    public IScope CurrentScope {
+      get { return CurrentScopeParameter.ActualValue; }
+    }
+    #endregion
+
+    [StorableConstructor]
+    private VariableRemover(bool deserializing) : base(deserializing) { }
+    private VariableRemover(VariableRemover original, Cloner cloner) : base(original, cloner) { }
+    public VariableRemover()
+      : base() {
+      Parameters.Add(new ValueParameter<StringValue>("VariableName", "The name of the variable to remove from the current scope."));
+      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope whose variables and sub-scopes should be removed."));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new VariableRemover(this, cloner);
+    }
+
+    public override IOperation Apply() {
+      CurrentScope.Variables.Remove(VariableNameParameter.Value.Value);
+      return base.Apply();
+    }
+  }
+}
