Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs	(revision 7270)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs	(revision 7669)
@@ -38,5 +38,6 @@
       Points,
       Bars,
-      Histogram
+      Histogram,
+      StepLine
     }
     #endregion
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 7270)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 7669)
@@ -99,6 +99,6 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="ALGLIB-3.1.0, Version=3.1.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <HintPath>..\..\bin\ALGLIB-3.1.0.dll</HintPath>
+    <Reference Include="ALGLIB-3.4.0, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\bin\ALGLIB-3.4.0.dll</HintPath>
       <Private>False</Private>
     </Reference>
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/MultidimensionalScaling/MultidimensionalScaling.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/MultidimensionalScaling/MultidimensionalScaling.cs	(revision 7270)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/MultidimensionalScaling/MultidimensionalScaling.cs	(revision 7669)
@@ -103,8 +103,10 @@
     private static void StressFitness(double[] x, double[] fi, object obj) {
       Info info = (obj as Info);
+      int idx = 0;
       for (int i = 0; i < info.Coordinates.Rows; i++) {
-        double f = Stress(x, info.Dissimilarities[info.Row, i], info.Coordinates[i, 0], info.Coordinates[i, 1]);
-        if (i < info.Row) fi[i] = f;
-        else if (i > info.Row) fi[i - 1] = f;
+        if (i == info.Row) continue;
+        if (!double.IsNaN(info.Dissimilarities[info.Row, i]))
+          fi[idx++] = Stress(x, info.Dissimilarities[info.Row, i], info.Coordinates[i, 0], info.Coordinates[i, 1]);
+        else fi[idx++] = 0.0;
       }
     }
@@ -114,14 +116,16 @@
       int idx = 0;
       for (int i = 0; i < info.Coordinates.Rows; i++) {
-        if (i != info.Row) {
-          double c = info.Dissimilarities[info.Row, i];
-          double a = info.Coordinates[i, 0];
-          double b = info.Coordinates[i, 1];
-          double f = Stress(x, c, a, b);
-          fi[idx] = f;
+        if (i == info.Row) continue;
+        double c = info.Dissimilarities[info.Row, i];
+        double a = info.Coordinates[i, 0];
+        double b = info.Coordinates[i, 1];
+        if (!double.IsNaN(c)) {
+          fi[idx] = Stress(x, c, a, b); ;
           jac[idx, 0] = 2 * (x[0] - a) * (Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1])) - c) / Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1]));
           jac[idx, 1] = 2 * (x[1] - b) * (Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1])) - c) / Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1]));
-          idx++;
+        } else {
+          fi[idx] = jac[idx, 0] = jac[idx, 1] = 0;
         }
+        idx++;
       }
     }
@@ -153,6 +157,7 @@
       for (int i = 0; i < dimension - 1; i++) {
         for (int j = i + 1; j < dimension; j++) {
-          if (dissimilarities[i, j] != dissimilarities[j, i]) throw new ArgumentException("Dissimilarities is not a symmetric matrix.", "dissimilarities");
-          if (dissimilarities[i, j] != 0) {
+          if (dissimilarities[i, j] != dissimilarities[j, i] && !(double.IsNaN(dissimilarities[i, j]) && double.IsNaN(dissimilarities[j, i])))
+            throw new ArgumentException("Dissimilarities is not a symmetric matrix.", "dissimilarities");
+          if (!double.IsNaN(dissimilarities[i, j])) {
             stress += Stress(coordinates[i, 0], coordinates[i, 1], dissimilarities[i, j], coordinates[j, 0], coordinates[j, 1]);
             normalization += (dissimilarities[i, j] * dissimilarities[i, j]);
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/Plugin.cs.frame
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/Plugin.cs.frame	(revision 7270)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/Plugin.cs.frame	(revision 7669)
@@ -28,5 +28,5 @@
   [Plugin("HeuristicLab.Analysis", "3.3.6.$WCREV$")]
   [PluginFile("HeuristicLab.Analysis-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.ALGLIB", "3.1")]
+  [PluginDependency("HeuristicLab.ALGLIB", "3.4")]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/ValueAnalysis/MinAverageMaxValueAnalyzer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/ValueAnalysis/MinAverageMaxValueAnalyzer.cs	(revision 7270)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Analysis/3.3/ValueAnalysis/MinAverageMaxValueAnalyzer.cs	(revision 7669)
@@ -94,5 +94,5 @@
       : base(original, cloner) {
       resultsCollector = cloner.Clone(original.resultsCollector);
-      Initialize();
+      RegisterEventHandlers();
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -147,9 +147,13 @@
       #endregion
 
-      Initialize();
+      RegisterEventHandlers();
     }
 
     [StorableHook(HookType.AfterDeserialization)]
-    private void Initialize() {
+    private void AfterDeserialization() {
+      RegisterEventHandlers();
+    }
+
+    private void RegisterEventHandlers() {
       ValueParameter.DepthChanged += new EventHandler(ValueParameter_DepthChanged);
       CollectMinValueInResultsParameter.ValueChanged += new EventHandler(CollectMinValueInResultsParameter_ValueChanged);
