Index: stable/HeuristicLab.Analysis.Views/3.3/DataTableHistoryView.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/DataTableHistoryView.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/DataTableHistoryView.cs	(revision 16838)
@@ -37,5 +37,5 @@
       DataTable current = viewHost.Content as DataTable;
       if (current == null) return;
-      using (DataTableVisualPropertiesDialog dialog = new DataTableVisualPropertiesDialog(current)) {
+      using (var dialog = new DataTableVisualPropertiesDialog<DataRow>(current)) {
         if (dialog.ShowDialog(this) != DialogResult.OK) return;
         HashSet<string> modifiedDisplayNames = new HashSet<string>(dialog.RowsWithModifiedDisplayNames);
Index: stable/HeuristicLab.Analysis.Views/3.3/DataTableView.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 16838)
@@ -128,5 +128,5 @@
     public void ShowConfiguration() {
       if (Content != null) {
-        using (var dialog = new DataTableVisualPropertiesDialog(Content)) {
+        using (var dialog = new DataTableVisualPropertiesDialog<DataRow>(Content)) {
           dialog.ShowDialog(this);
         }
@@ -337,12 +337,4 @@
     #region Event Handlers
     #region Content Event Handlers
-    protected override void Content_NameChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_NameChanged), sender, e);
-      else {
-        Content.VisualProperties.Title = Content.Name;
-        base.Content_NameChanged(sender, e);
-      }
-    }
     private void Content_VisualPropertiesChanged(object sender, EventArgs e) {
       if (InvokeRequired)
Index: stable/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.Designer.cs	(revision 16838)
@@ -21,5 +21,5 @@
 
 namespace HeuristicLab.Analysis.Views {
-  partial class DataTableVisualPropertiesDialog {
+  partial class DataTableVisualPropertiesDialog<TDataRow> {
     /// <summary>
     /// Required designer variable.
Index: stable/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs	(revision 16838)
@@ -27,7 +27,7 @@
 
 namespace HeuristicLab.Analysis.Views {
-  public partial class DataTableVisualPropertiesDialog : Form {
+  public partial class DataTableVisualPropertiesDialog<TDataRow> : Form where TDataRow : class, IDataRow {
     protected bool SuppressEvents { get; set; }
-    protected DataTable Content { get; private set; }
+    protected IDataTable<TDataRow> Content { get; private set; }
     private DataTableVisualProperties originalDataTableVPs;
     private Dictionary<string, DataRowVisualProperties> originalDataRowVPs;
@@ -36,5 +36,5 @@
     public IEnumerable<string> RowsWithModifiedDisplayNames { get { return modifiedDisplayNames.AsEnumerable(); } }
 
-    public DataTableVisualPropertiesDialog(DataTable dataTable) {
+    public DataTableVisualPropertiesDialog(IDataTable<TDataRow> dataTable) {
       InitializeComponent();
       #region Prepare controls
@@ -51,5 +51,5 @@
       originalDataTableVPs = (DataTableVisualProperties)Content.VisualProperties.Clone();
       originalDataRowVPs = new Dictionary<string, DataRowVisualProperties>();
-      foreach (DataRow row in Content.Rows)
+      foreach (var row in Content.Rows)
         originalDataRowVPs.Add(row.Name, (DataRowVisualProperties)row.VisualProperties.Clone());
 
@@ -62,5 +62,5 @@
 
     private void RegisterContentEvents() {
-      foreach (DataRow row in Content.Rows) {
+      foreach (var row in Content.Rows) {
         row.VisualProperties.PropertyChanged += new PropertyChangedEventHandler(Row_VisualProperties_PropertyChanged);
       }
@@ -68,5 +68,5 @@
 
     private void DeregisterContentEvents() {
-      foreach (DataRow row in Content.Rows) {
+      foreach (var row in Content.Rows) {
         row.VisualProperties.PropertyChanged -= new PropertyChangedEventHandler(Row_VisualProperties_PropertyChanged);
       }
@@ -80,5 +80,5 @@
 
     private void Row_VisualProperties_PropertyChanged(object sender, PropertyChangedEventArgs e) {
-      foreach (DataRow row in Content.Rows) {
+      foreach (var row in Content.Rows) {
         if (e.PropertyName == "DisplayName" && row.VisualProperties == sender) {
           modifiedDisplayNames.Add(row.Name);
@@ -109,5 +109,5 @@
     private void cancelButton_Click(object sender, System.EventArgs e) {
       DialogResult = DialogResult.Cancel;
-      foreach (DataRow row in Content.Rows) {
+      foreach (var row in Content.Rows) {
         row.VisualProperties = originalDataRowVPs[row.Name];
       }
@@ -160,5 +160,5 @@
     private void FillSeriesListView() {
       seriesListView.SelectedIndices.Clear();
-      foreach (DataRow row in Content.Rows) {
+      foreach (var row in Content.Rows) {
         seriesListView.Items.Add(new ListViewItem(row.Name, 0));
       }
@@ -168,5 +168,5 @@
 
     private void UpdateAllSeriesPositions() {
-      Dictionary<string, DataRow> rows = Content.Rows.ToDictionary(x => x.Name);
+      var rows = Content.Rows.ToDictionary(x => x.Name);
       Content.Rows.Clear();
       for (int i = 0; i < seriesListView.Items.Count; i++) {
Index: stable/HeuristicLab.Analysis.Views/3.3/IndexedDataTableView.Designer.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/IndexedDataTableView.Designer.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/IndexedDataTableView.Designer.cs	(revision 16838)
@@ -50,4 +50,5 @@
       System.Windows.Forms.DataVisualization.Charting.Title title1 = new System.Windows.Forms.DataVisualization.Charting.Title();
       this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart();
+      this.configureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
@@ -100,4 +101,11 @@
       this.chart.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chart_MouseMove);
       // 
+      // configureToolStripMenuItem
+      // 
+      this.configureToolStripMenuItem.Name = "configureToolStripMenuItem";
+      this.configureToolStripMenuItem.Size = new System.Drawing.Size(256, 22);
+      this.configureToolStripMenuItem.Text = "Configure Chart...";
+      this.configureToolStripMenuItem.Click += new System.EventHandler(this.configureToolStripMenuItem_Click);
+      // 
       // DataTableView
       // 
@@ -121,5 +129,5 @@
 
     protected HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart chart;
-
+    private System.Windows.Forms.ToolStripMenuItem configureToolStripMenuItem;
   }
 }
Index: stable/HeuristicLab.Analysis.Views/3.3/IndexedDataTableView.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/IndexedDataTableView.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/IndexedDataTableView.cs	(revision 16838)
@@ -20,7 +20,4 @@
 #endregion
 
-using HeuristicLab.Collections;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
 using System;
 using System.Collections.Generic;
@@ -29,9 +26,12 @@
 using System.Windows.Forms;
 using System.Windows.Forms.DataVisualization.Charting;
+using HeuristicLab.Collections;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
 
 namespace HeuristicLab.Analysis.Views {
   [View("IndexedDataTable View")]
   [Content(typeof(IndexedDataTable<>), true)]
-  public partial class IndexedDataTableView<T> : NamedItemView {
+  public partial class IndexedDataTableView<T> : NamedItemView, IConfigureableView {
     protected List<Series> invisibleSeries;
     protected Dictionary<IObservableList<Tuple<T, double>>, IndexedDataRow<T>> valuesRowsTable;
@@ -49,4 +49,5 @@
       chart.ChartAreas[0].CursorX.Interval = 1;
       chart.SuppressExceptions = true;
+      chart.ContextMenuStrip.Items.Add(configureToolStripMenuItem);
     }
 
@@ -131,4 +132,12 @@
       base.SetEnabledStateOfControls();
       chart.Enabled = Content != null;
+    }
+
+    public void ShowConfiguration() {
+      if (Content != null) {
+        using (var dialog = new DataTableVisualPropertiesDialog<IndexedDataRow<T>>(Content)) {
+          dialog.ShowDialog(this);
+        }
+      } else MessageBox.Show("Nothing to configure.");
     }
 
@@ -211,4 +220,6 @@
       if (Content.VisualProperties.TitleFont != null) chart.Titles[0].Font = Content.VisualProperties.TitleFont;
       if (!Content.VisualProperties.TitleColor.IsEmpty) chart.Titles[0].ForeColor = Content.VisualProperties.TitleColor;
+      chart.Titles[0].Text = Content.VisualProperties.Title;
+      chart.Titles[0].Visible = !string.IsNullOrEmpty(Content.VisualProperties.Title);
 
       if (Content.VisualProperties.AxisTitleFont != null) area.AxisX.TitleFont = Content.VisualProperties.AxisTitleFont;
@@ -313,12 +324,4 @@
     #region Event Handlers
     #region Content Event Handlers
-    protected override void Content_NameChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_NameChanged), sender, e);
-      else {
-        chart.Titles[0].Text = Content.Name;
-        base.Content_NameChanged(sender, e);
-      }
-    }
     private void Content_VisualPropertiesChanged(object sender, EventArgs e) {
       if (InvokeRequired)
@@ -508,4 +511,7 @@
     }
     #endregion
+    private void configureToolStripMenuItem_Click(object sender, EventArgs e) {
+      ShowConfiguration();
+    }
     #endregion
 
Index: stable/HeuristicLab.Analysis.Views/3.3/ScatterPlotView.cs
===================================================================
--- stable/HeuristicLab.Analysis.Views/3.3/ScatterPlotView.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis.Views/3.3/ScatterPlotView.cs	(revision 16838)
@@ -40,4 +40,5 @@
     protected Dictionary<Series, Series> seriesToRegressionSeriesTable;
     private double xMin, xMax, yMin, yMax;
+    protected bool showChartOnly = false;
 
     public new ScatterPlot Content {
@@ -46,13 +47,10 @@
     }
 
-    public bool ShowName {
-      get { return nameTextBox.Visible; }
+    public bool ShowChartOnly {
+      get { return showChartOnly; }
       set {
-        if (nameTextBox.Visible != value) {
-          foreach (Control c in Controls) {
-            if (c == chart) continue;
-            c.Visible = value;
-          }
-          chart.Dock = value ? DockStyle.None : DockStyle.Fill;
+        if (showChartOnly != value) {
+          showChartOnly = value;
+          UpdateControlsVisibility();
         }
       }
@@ -137,4 +135,16 @@
         }
       } else MessageBox.Show("Nothing to configure.");
+    }
+
+    protected void UpdateControlsVisibility() {
+      if (InvokeRequired)
+        Invoke(new Action(UpdateControlsVisibility));
+      else {
+        foreach (Control c in Controls) {
+          if (c == chart) continue;
+          c.Visible = !showChartOnly;
+        }
+        chart.Dock = showChartOnly ? DockStyle.Fill : DockStyle.None;
+      }
     }
 
Index: stable/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs	(revision 16838)
@@ -34,5 +34,5 @@
   [Item("DataRow", "A row of data values.")]
   [StorableClass]
-  public class DataRow : NamedItem {
+  public class DataRow : NamedItem , IDataRow {
     private DataRowVisualProperties visualProperties;
     public DataRowVisualProperties VisualProperties {
Index: stable/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs	(revision 16838)
@@ -37,5 +37,5 @@
   [Item("DataTable", "A table of data values.")]
   [StorableClass]
-  public class DataTable : NamedItem, IStringConvertibleMatrix {
+  public class DataTable : NamedItem, IStringConvertibleMatrix, IDataTable<DataRow> {
     public static new Image StaticItemImage {
       get { return HeuristicLab.Common.Resources.VSImageLibrary.Performance; }
Index: stable/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataRow.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataRow.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataRow.cs	(revision 16838)
@@ -32,5 +32,5 @@
   [Item("IndexedDataRow", "A data row that contains a series of points.")]
   [StorableClass]
-  public class IndexedDataRow<T> : NamedItem {
+  public class IndexedDataRow<T> : NamedItem, IDataRow {
 
     private DataRowVisualProperties visualProperties;
Index: stable/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataTable.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataTable.cs	(revision 16837)
+++ stable/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataTable.cs	(revision 16838)
@@ -34,5 +34,5 @@
   [Item("IndexedDataTable", "A data table where the points are also given with a certain index.")]
   [StorableClass]
-  public class IndexedDataTable<T> : NamedItem, IStringConvertibleMatrix {
+  public class IndexedDataTable<T> : NamedItem, IStringConvertibleMatrix, IDataTable<IndexedDataRow<T>> {
     public static new Image StaticItemImage {
       get { return HeuristicLab.Common.Resources.VSImageLibrary.Performance; }
@@ -90,5 +90,5 @@
     public IndexedDataTable(string name)
       : base(name) {
-      VisualProperties = new DataTableVisualProperties();
+      VisualProperties = new DataTableVisualProperties(name);
       rows = new NamedItemCollection<IndexedDataRow<T>>();
       this.RegisterRowsEvents();
@@ -96,5 +96,5 @@
     public IndexedDataTable(string name, string description)
       : base(name, description) {
-      VisualProperties = new DataTableVisualProperties();
+      VisualProperties = new DataTableVisualProperties(name);
       rows = new NamedItemCollection<IndexedDataRow<T>>();
       this.RegisterRowsEvents();
@@ -103,4 +103,22 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new IndexedDataTable<T>(this, cloner);
+    }
+
+    #region BackwardsCompatibility3.3
+    // Using the name as title is the old style
+    [Storable(DefaultValue = true)]
+    private bool useNameAsTitle = false;
+    #endregion
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      // BackwardsCompatibility3.3
+      #region Backwards compatible code, remove with 3.4
+      // Previously, the Name of the IndexedDataTable was used as Title
+      if (useNameAsTitle && string.IsNullOrEmpty(VisualProperties.Title)) {
+        VisualProperties.Title = Name;
+        useNameAsTitle = false;
+      }
+      #endregion
     }
 
Index: stable/HeuristicLab.Analysis/3.3/DataVisualization/Interfaces/IDataRow.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/DataVisualization/Interfaces/IDataRow.cs	(revision 16838)
+++ stable/HeuristicLab.Analysis/3.3/DataVisualization/Interfaces/IDataRow.cs	(revision 16838)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2019 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.Core;
+
+namespace HeuristicLab.Analysis {
+  public interface IDataRow : INamedItem {
+    DataRowVisualProperties VisualProperties { get; set; }
+  }
+}
Index: stable/HeuristicLab.Analysis/3.3/DataVisualization/Interfaces/IDataTable.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/DataVisualization/Interfaces/IDataTable.cs	(revision 16838)
+++ stable/HeuristicLab.Analysis/3.3/DataVisualization/Interfaces/IDataTable.cs	(revision 16838)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2019 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.Core;
+
+namespace HeuristicLab.Analysis {
+  public interface IDataTable<TDataRow> : INamedItem where TDataRow : class, IDataRow {
+    DataTableVisualProperties VisualProperties { get; set; }
+    NamedItemCollection<TDataRow> Rows { get; }
+  }
+}
Index: stable/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
===================================================================
--- stable/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 16837)
+++ stable/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 16838)
@@ -134,4 +134,6 @@
     <Compile Include="DataVisualization\IndexedDataRow.cs" />
     <Compile Include="DataVisualization\IndexedDataTable.cs" />
+    <Compile Include="DataVisualization\Interfaces\IDataRow.cs" />
+    <Compile Include="DataVisualization\Interfaces\IDataTable.cs" />
     <Compile Include="DataVisualization\ScatterPlotDataRowVisualProperties.cs" />
     <Compile Include="DataVisualization\ScatterPlotDataRow.cs" />
Index: stable/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.cs
===================================================================
--- stable/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.cs	(revision 16837)
+++ stable/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.cs	(revision 16838)
@@ -457,5 +457,5 @@
             Content = scatterPlot,
             Dock = DockStyle.Fill,
-            ShowName = false
+            ShowChartOnly = true
             //ShowLegend = false,
             //XAxisFormat = "G3"
Index: stable/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotSingleView.Designer.cs
===================================================================
--- stable/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotSingleView.Designer.cs	(revision 16837)
+++ stable/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotSingleView.Designer.cs	(revision 16838)
@@ -86,5 +86,5 @@
       this.scatterPlotView.Name = "scatterPlotView";
       this.scatterPlotView.ReadOnly = false;
-      this.scatterPlotView.ShowName = false;
+      this.scatterPlotView.ShowChartOnly = true;
       this.scatterPlotView.Size = new System.Drawing.Size(618, 517);
       this.scatterPlotView.TabIndex = 0;
Index: stable/HeuristicLab.Problems.TestFunctions.Views/3.3/ParetoFrontScatterPlotView.Designer.cs
===================================================================
--- stable/HeuristicLab.Problems.TestFunctions.Views/3.3/ParetoFrontScatterPlotView.Designer.cs	(revision 16837)
+++ stable/HeuristicLab.Problems.TestFunctions.Views/3.3/ParetoFrontScatterPlotView.Designer.cs	(revision 16838)
@@ -62,5 +62,5 @@
       this.scatterPlotView.Name = "scatterPlotView";
       this.scatterPlotView.ReadOnly = false;
-      this.scatterPlotView.ShowName = false;
+      this.scatterPlotView.ShowChartOnly = true;
       this.scatterPlotView.Size = new System.Drawing.Size(615, 342);
       this.scatterPlotView.TabIndex = 3;
