Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DataBarSetView.Designer.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DataBarSetView.Designer.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DataBarSetView.Designer.cs	(revision 14588)
@@ -45,4 +45,5 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
       System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
@@ -53,7 +54,7 @@
       // chart
       // 
-      this.chart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.chart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       chartArea1.Name = "ChartArea1";
       this.chart.ChartAreas.Add(chartArea1);
@@ -74,5 +75,4 @@
       // DataBarSetView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Controls.Add(this.chart);
@@ -81,5 +81,5 @@
       ((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit();
       this.ResumeLayout(false);
-      this.PerformLayout();
+
     }
     #endregion
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DataBarSetView.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DataBarSetView.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DataBarSetView.cs	(revision 14588)
@@ -32,7 +32,8 @@
 namespace HeuristicLab.DatastreamAnalysis.Views {
   [View("DataBarSet")]
-  [Content(typeof(DataBarSet), false)]
+  [Content(typeof(DataBarSet), true)]
   public partial class DataBarSetView : ItemView {
     private bool updateInProgress;
+    private string seriesName = "Ensembles";
 
     public virtual Image ViewImage {
@@ -53,9 +54,9 @@
       this.chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
       this.chart.ChartAreas[0].AxisX.Title = "Ensembles";
-      this.chart.ChartAreas[0].AxisX.Maximum = 0.0;
-      this.chart.ChartAreas[0].AxisX.Maximum = Content.Bars.Count;
+      //this.chart.ChartAreas[0].AxisX.Maximum = 0.0;
+      //this.chart.ChartAreas[0].AxisX.Maximum = (Content != null && Content.Bars != null) ? Content.Bars.Count : 0.0;
       //AddCustomLabelsToAxis(this.chart.ChartAreas[0].AxisX);
 
-      this.chart.ChartAreas[0].AxisY.Title = "Estimated Values";
+      this.chart.ChartAreas[0].AxisY.Title = "Estimation Quality";
       this.chart.ChartAreas[0].AxisY.IsStartedFromZero = true;
       this.chart.ChartAreas[0].AxisY.Minimum = 0.0;
@@ -69,8 +70,8 @@
       axis.CustomLabels.Clear();
 
+      var bars = Content.Bars.ToList();
       for(int i = 0; i < Content.Bars.Count; i++) {
-        var bar = Content.Bars.Keys.ToList()[i].Value;
         CustomLabel barLabel = new CustomLabel();
-        barLabel.Text = bar;
+        barLabel.Text = bars[i].Name;
         barLabel.FromPosition = i;
         barLabel.ToPosition = i + 1;
@@ -82,5 +83,5 @@
       base.RegisterContentEvents();
       Content.BarsPropertyChanged += new EventHandler(Content_BarsChanged);
-      Content.BarValuesChanged += new EventHandler(Content_BarValuesChanged);
+      Content.BarValueChanged += new EventHandler(Content_BarValuesChanged);
       Content.ThresholdsPropertyChanged += new EventHandler(Content_ThresholdsChanged);
     }
@@ -89,5 +90,5 @@
       base.DeregisterContentEvents();
       Content.BarsPropertyChanged -= new EventHandler(Content_BarsChanged);
-      Content.BarValuesChanged -= new EventHandler(Content_BarValuesChanged);
+      Content.BarValueChanged -= new EventHandler(Content_BarValuesChanged);
       Content.ThresholdsPropertyChanged -= new EventHandler(Content_ThresholdsChanged);
     }
@@ -110,36 +111,110 @@
     }
     private void UpdateChart() {
-      if (updateInProgress) {
+      if (InvokeRequired) {
         Invoke((Action) UpdateChart);
-      }
-
-      updateInProgress = true;
-
-      // TODO
-      // clear the whole chart and redraw everything
-
-
-      updateInProgress = false;
+      } else if(!updateInProgress) {
+        if (Content == null) return;
+
+        updateInProgress = true;
+
+        chart.Series.Clear();
+        Series series = chart.Series.Add(seriesName);
+        series.IsVisibleInLegend = false;
+        series.ChartType = SeriesChartType.Column;
+        int i = 0; 
+        foreach (var bar in Content.Bars) {
+          series.Points.Add(new DataPoint(i, bar.Value) { AxisLabel = bar.Name, Color = bar.BarColor });
+          i++;
+        }
+
+        //chart.ChartAreas[0].RecalculateAxesScale();
+        AddThresholds();
+        CheckThresholds();
+
+        chart.Refresh();
+        updateInProgress = false;
+      }
     }
 
     private void UpdateChartValues() {
-      if (updateInProgress) {
-        Invoke((Action)UpdateChart);
-      }
-
-      updateInProgress = true;
-
-      // TODO
-      // simply update the bars' values
-
-      updateInProgress = false;
+      if (InvokeRequired) {
+        Invoke((Action) UpdateChartValues);
+      } else if(!updateInProgress) {
+        if (Content == null) return;
+
+        updateInProgress = true;
+
+        //chart.Series[seriesName].Points.Clear();
+        //foreach (var bar in Content.Bars) {
+        //  chart.Series[seriesName].Points.AddXY(bar.Name, bar.Value);
+        //}
+
+        var bars = Content.Bars.ToList();
+
+        for (int i = 0; i < bars.Count; i++) {
+          chart.Series[seriesName].Points.ElementAt(i).SetValueY(bars[i].Value);
+        }
+
+        CheckThresholds();
+        //chart.ChartAreas[0].RecalculateAxesScale();
+        chart.Refresh();
+        updateInProgress = false;
+      }
+    }
+
+    private void CheckThresholds() {
+      var bars = Content.Bars.ToList();
+      for (int i = 0; i < bars.Count; i++) {
+        var bar = bars[i];
+        if (bar.Value > bar.Threshold) {
+          chart.Series[seriesName].Points[i].Color = Color.Orange;
+        } else {
+          chart.Series[seriesName].Points[i].Color = bar.BarColor;
+        }
+      }
+    }
+
+    private void AddThresholdsOld() {
+      Series series = chart.Series.Add("Thresholds");
+      series.IsVisibleInLegend = false;
+      series.ChartType = SeriesChartType.StackedColumn;
+
+      int i = 0;
+      foreach (var bar in Content.Bars) {
+        //series.Points.Add(new DataPoint(i, new [] { bar.Threshold, bar.Threshold + 0.05 }) { AxisLabel = bar.Name, Color = Color.Transparent, BorderWidth = 2, BorderColor = bar.ThresholdColor});
+        series.Points.Add(new DataPoint(i, new[] { bar.Threshold, bar.Threshold + 0.05 }) { AxisLabel = bar.Name, Color = bar.ThresholdColor });
+        i++;
+      }
     }
 
     private void AddThresholds() {
-
-      foreach (var threshold in Content.Thresholds) {
-        // TODO: add threshold as red bold line to each of bars' conlumns
-      }
-
+      chart.Annotations.Clear();
+
+      var bars = Content.Bars.ToList();
+      for (int i = 0; i < bars.Count; i++) {
+        HorizontalLineAnnotation annotation = new HorizontalLineAnnotation();
+        annotation.AllowMoving = false;
+        annotation.AllowResizing = false;
+        annotation.LineWidth = 2;
+        annotation.LineColor = bars[i].ThresholdColor;
+        annotation.IsInfinitive = false;
+        annotation.ClipToChartArea = chart.ChartAreas[0].Name;
+        annotation.AxisX = chart.ChartAreas[0].AxisX;
+        annotation.AxisY = chart.ChartAreas[0].AxisY;
+        annotation.Y = bars[i].Threshold;
+
+        annotation.Alignment = ContentAlignment.MiddleCenter;
+        annotation.AnchorX = i;
+
+        annotation.X = i - 0.4;
+        annotation.Width = 52.0 / bars.Count;
+        annotation.Name = bars[i].Name;
+        annotation.Tag = bars[i].Name;
+        annotation.BringToFront();
+
+        
+
+        chart.Annotations.Add(annotation);
+      }
     }
 
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/HeuristicLab.DatastreamAnalysis.Views.csproj
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/HeuristicLab.DatastreamAnalysis.Views.csproj	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/HeuristicLab.DatastreamAnalysis.Views.csproj	(revision 14588)
@@ -136,4 +136,7 @@
   </ItemGroup>
   <ItemGroup>
+    <EmbeddedResource Include="DataBarSetView.resx">
+      <DependentUpon>DataBarSetView.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="DatastreamAnalysisOptimizerView.resx">
       <DependentUpon>DatastreamAnalysisOptimizerView.cs</DependentUpon>
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Plugin.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Plugin.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Plugin.cs	(revision 14588)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.DatastreamAnalysis.Views {
-  [Plugin("HeuristicLab.DatastreamAnalysis.Views", "3.4.14.14543")]
+  [Plugin("HeuristicLab.DatastreamAnalysis.Views", "3.4.14.14547")]
   [PluginFile("HeuristicLab.DatastreamAnalysis.Views-3.4.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Properties/AssemblyInfo.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Properties/AssemblyInfo.cs	(revision 14588)
@@ -54,3 +54,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.14.14543")]
+[assembly: AssemblyFileVersion("3.4.14.14547")]
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DataBar.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DataBar.cs	(revision 14588)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DataBar.cs	(revision 14588)
@@ -0,0 +1,168 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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 System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Runtime.CompilerServices;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.DatastreamAnalysis {
+  /// <summary>
+  /// Bar representation for a single value.
+  /// </summary>
+  [Item("DataBar", "Bar representation for a single value")]
+  [StorableClass]
+  public class DataBar : NamedItem, INotifyPropertyChanged {
+    private double value;
+
+    public double Value {
+      get { return value; }
+      set {
+
+        if (this.value != value) {
+          this.value = value;
+          OnValuePropertyChanged("Value");
+        }
+      }
+    }
+
+    private double threshold;
+
+    public double Threshold {
+      get { return threshold; }
+      set {
+        if (this.value != value) {
+          this.value = value;
+          OnThresholdPropertyChanged("Threshold");
+        }
+      }
+    }
+
+    #region Persistence Properties
+    [Storable(Name = "Value")]
+    private double StorableValue {
+      get { return value; }
+      set { this.value = value; }
+    }
+    [Storable(Name = "Threshold")]
+    private double StorableThreshold {
+      get { return threshold; }
+      set { this.threshold = value; }
+    }
+    #endregion
+
+    #region Visual Properties
+    private Color barColor;
+    public Color BarColor
+    {
+      get { return barColor; }
+      set
+      {
+        if (barColor != value) {
+          barColor = value;
+          OnValuePropertyChanged("BarColor");
+        }
+      }
+    }
+
+    private Color thresholdColor;
+    public Color ThresholdColor
+    {
+      get { return thresholdColor; }
+      set
+      {
+        if (thresholdColor != value) {
+          thresholdColor = value;
+          OnThresholdPropertyChanged("ThresholdColor");
+        }
+      }
+    }
+    #endregion
+
+    #region constructors, cloner ...
+    [StorableConstructor]
+    protected DataBar(bool deserializing) : base(deserializing) { }
+
+    protected DataBar(DataBar original, Cloner cloner) : base(original, cloner) {
+      this.value = original.value;
+      this.threshold = original.threshold;
+      this.barColor = original.barColor;
+      this.thresholdColor = original.thresholdColor;
+    }
+
+    public DataBar() : this("DataBar") {
+      barColor = Color.Empty;
+      thresholdColor = Color.Red;
+    }
+
+    public DataBar(string name) : base(name) {
+      if (string.IsNullOrEmpty(name)) throw new ArgumentException("Name of a DataBar cannot be empty", name);
+      barColor = Color.Empty;
+      thresholdColor = Color.Red;
+    }
+
+    public DataBar(string name, double threshold) : base(name) {
+      if (string.IsNullOrEmpty(name)) throw new ArgumentException("Name of a DataBar cannot be empty", name);
+      this.threshold = threshold;
+      barColor = Color.Empty;
+      thresholdColor = Color.Red;
+    }
+
+    public DataBar(string name, string description) : base(name, description) {
+      if (string.IsNullOrEmpty(name)) throw new ArgumentException("Name of a DataBar cannot be empty", name);
+      barColor = Color.Empty;
+      thresholdColor = Color.Red;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DataBar(this, cloner);
+    }
+    #endregion
+
+    protected override void OnNameChanged() {
+      base.OnNameChanged();
+    }
+
+    public event PropertyChangedEventHandler PropertyChanged;
+    public event PropertyChangedEventHandler ValuePropertyChanged;
+    public event PropertyChangedEventHandler ThresholdPropertyChanged;
+
+    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) {
+      PropertyChangedEventHandler handler = PropertyChanged;
+      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
+    }
+
+    protected virtual void OnValuePropertyChanged([CallerMemberName] string propertyName = null) {
+      PropertyChangedEventHandler handler = ValuePropertyChanged;
+      if(handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
+    }
+
+    protected virtual void OnThresholdPropertyChanged([CallerMemberName] string propertyName = null) {
+      PropertyChangedEventHandler handler = ThresholdPropertyChanged;
+      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
+    }
+  }
+}
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DataBarSet.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DataBarSet.cs	(revision 14588)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DataBarSet.cs	(revision 14588)
@@ -0,0 +1,153 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Analysis;
+using HeuristicLab.Collections;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.DatastreamAnalysis {
+  /// <summary>
+  /// A set of bars, each having name and value.
+  /// </summary>
+  [Item("DataBarSet", "A set of bars, each having name and value.")]
+  [StorableClass]
+  public class DataBarSet : NamedItem {
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.Performance; }
+    }
+
+    #region properties
+
+    [Storable]
+    private NamedItemCollection<DataBar> bars;
+
+    public NamedItemCollection<DataBar> Bars {
+      get { return bars; }
+      set {
+        if (bars != value) {
+          if(value == null) throw new ArgumentNullException("Value for Bars must not be null.");
+          if(bars != null) DeregisterBarsEvents();
+          bars = value;
+          RegisterBarsEvents();
+        }
+      }
+    }
+
+    #endregion
+
+    #region constructors, cloner,...
+    [StorableConstructor]
+    protected DataBarSet(bool deserializing) : base(deserializing) { }
+
+    public DataBarSet() : base() {
+      Name = "DataBarSet";
+      Bars = new NamedItemCollection<DataBar>();
+    }
+
+    public DataBarSet(string name) : base(name) {
+      Bars = new NamedItemCollection<DataBar>();
+    }
+
+    public DataBarSet(string name, string description) : base(name, description) {
+      Bars = new NamedItemCollection<DataBar>();
+    }
+
+    public DataBarSet(DataBarSet original, Cloner cloner) : base(original, cloner) {
+      Bars = cloner.Clone(original.bars);
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DataBarSet(this, cloner);
+    }
+    #endregion
+
+    #region events
+
+    //public event EventHandler BarsPropertyChanged;
+
+
+    //protected virtual void OnBarsPropertyChanged() {
+    //  EventHandler handler = BarsPropertyChanged;
+    //  if (handler != null) handler(this, EventArgs.Empty);
+    //}
+
+    //private void Bars_PropertyChanged(object sender, PropertyChangedEventArgs e) {
+    //  OnBarsPropertyChanged();
+    //}
+
+    public event EventHandler ThresholdsPropertyChanged;
+
+    protected virtual void OnThresholdsPropertyChanged() {
+      EventHandler handler = ThresholdsPropertyChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    private void Thresholds_PropertyChanged(object sender, PropertyChangedEventArgs e) {
+      OnThresholdsPropertyChanged();
+    }
+
+
+
+    public event EventHandler BarsPropertyChanged;
+    public event EventHandler BarValueChanged;
+    protected virtual void OnBarsPropertyChanged() {
+      EventHandler handler = BarsPropertyChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    protected virtual void OnBarValueChanged(PropertyChangedEventArgs e) {
+      EventHandler handler = BarValueChanged;
+      if(handler != null) handler(this, e);
+    }
+
+    protected virtual void RegisterBarsEvents() {
+      bars.ItemsAdded += new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsAdded);
+      bars.ItemsRemoved += new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsChanged);
+      bars.ItemsReplaced += new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsChanged);
+      bars.CollectionReset += new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsChanged);
+    }
+
+    protected virtual void DeregisterBarsEvents() {
+      bars.ItemsAdded -= new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsAdded);
+      bars.ItemsRemoved -= new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsChanged);
+      bars.ItemsReplaced -= new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsChanged);
+      bars.CollectionReset -= new CollectionItemsChangedEventHandler<DataBar>(Bars_ItemsChanged);
+    }
+
+    private void Bars_ItemsAdded(object sender, CollectionItemsChangedEventArgs<DataBar> e) {
+      foreach (var bar in e.Items) {
+        bar.ValuePropertyChanged += new PropertyChangedEventHandler(Bars_ValueChanged);
+        //bar.ThresholdPropertyChanged += new PropertyChangedEventHandler();
+      }
+      OnBarsPropertyChanged();
+    }
+
+    private void Bars_ItemsChanged(object sender, CollectionItemsChangedEventArgs<DataBar> e) {
+      OnBarsPropertyChanged();
+    }
+
+    private void Bars_ValueChanged(object sender, PropertyChangedEventArgs e) {
+      OnBarValueChanged(e);
+    }
+
+    #endregion
+
+    #region helpers
+    public static Dictionary<TKey, TValue> CloneDictionary<TKey, TValue>(Dictionary<TKey, TValue> original) where TValue : ICloneable {
+      Dictionary<TKey, TValue> ret = new Dictionary<TKey, TValue>(original.Count, original.Comparer);
+
+      foreach (KeyValuePair<TKey, TValue> entry in original) {
+        ret.Add(entry.Key, (TValue)entry.Value.Clone());
+      }
+      return ret;
+    }
+    #endregion
+  }
+}
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DatastreamAnalysisOptimizer.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DatastreamAnalysisOptimizer.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/DatastreamAnalysisOptimizer.cs	(revision 14588)
@@ -158,5 +158,5 @@
 
     private DataBarSet ResultsQualitiesBars {
-      get { return (DataBarSet) Results["Ensemble"].Value; }
+      get { return (DataBarSet) Results["Ensemble Comparison"].Value; }
     }
 
@@ -165,5 +165,5 @@
 
       Results.Add(new Result("Sliding Window Movements", new IntValue(0)));
-      Results.Add(new Result("Qualities", new DataTable("Qualities")));
+      Results.Add(new Result("Qualities", new DataTable("Pearson R²")));
       Results.Add(new Result("Targets", new DataTable("Targets")));
       Results.Add(new Result("Ensemble Comparison", new DataBarSet("Ensemble Comparison")));
@@ -179,5 +179,5 @@
 
         // qualities (bars)
-        ResultsQualitiesBars.Bars.Add(new StringValue(ensemble.Name), new DoubleValue(0.0));
+        ResultsQualitiesBars.Bars.Add(new DataBar(ensemble.Name, 0.9));
       }
     }
@@ -435,12 +435,15 @@
         var pR2 = error == OnlineCalculatorError.None ? pR * pR : 0.0;
 
+        int replayAmount = Datastream.FitnessPartition.End - replayedIndex;
+        int replayCount = estimatedValues.Length - replayAmount;
+
         for (int i = replayedIndex; i < Datastream.FitnessPartition.End; i++) {
-          ResultsTargets.Rows[ensemble.Name].Values.Add(averageEstimatedValue);
+          //ResultsTargets.Rows[ensemble.Name].Values.Add(averageEstimatedValue);
+          ResultsTargets.Rows[ensemble.Name].Values.Add(estimatedValues[replayCount]);
+          replayCount++;
 
           //ResultsQualities.Rows[ensemble.Name + " - " + ResultsQualitiesMSE].Values.Add(mse);
           ResultsQualities.Rows[ensemble.Name + " - " + ResultsQualitiesPR2].Values.Add(pR2);
-          ResultsQualitiesBars.Bars[new StringValue(ensemble.ItemName)].Value = pR2;
-          ResultsQualitiesBars.Bars[new StringValue(ensemble.ItemName)] = new DoubleValue(pR2);
-          //ResultsQualitiesBars.Bars[new StringValue(ensemble.ItemName)]
+          ResultsQualitiesBars.Bars[ensemble.Name].Value = pR2;
         }
       }
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/HeuristicLab.DatastreamAnalysis.csproj
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/HeuristicLab.DatastreamAnalysis.csproj	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/HeuristicLab.DatastreamAnalysis.csproj	(revision 14588)
@@ -103,4 +103,5 @@
   <ItemGroup>
     <Compile Include="AnalysisBase.cs" />
+    <Compile Include="DataBar.cs" />
     <Compile Include="DataBarSet.cs" />
     <Compile Include="Datastream.cs" />
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Plugin.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Plugin.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Plugin.cs	(revision 14588)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.DatastreamAnalysis {
-  [Plugin("HeuristicLab.DatastreamAnalysis", "3.4.14.14543")]
+  [Plugin("HeuristicLab.DatastreamAnalysis", "3.4.14.14547")]
   [PluginFile("HeuristicLab.DatastreamAnalysis-3.4.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Properties/AssemblyInfo.cs	(revision 14587)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Properties/AssemblyInfo.cs	(revision 14588)
@@ -54,3 +54,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.14.14543")]
+[assembly: AssemblyFileVersion("3.4.14.14547")]
