Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj	(revision 14511)
@@ -281,10 +281,4 @@
     <Compile Include="PreprocessingCheckedVariablesView.Designer.cs">
       <DependentUpon>PreprocessingCheckedVariablesView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="PreprocessingCheckedItemListView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="PreprocessingCheckedItemListView.Designer.cs">
-      <DependentUpon>PreprocessingCheckedItemListView.cs</DependentUpon>
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.Designer.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.Designer.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.Designer.cs	(revision 14511)
@@ -62,10 +62,9 @@
       // optionsBox
       // 
-      this.optionsBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
       this.optionsBox.Controls.Add(this.allInOneCheckBox);
-      this.optionsBox.Location = new System.Drawing.Point(4, 262);
+      this.optionsBox.Dock = System.Windows.Forms.DockStyle.Bottom;
+      this.optionsBox.Location = new System.Drawing.Point(0, 357);
       this.optionsBox.Name = "optionsBox";
-      this.optionsBox.Size = new System.Drawing.Size(84, 138);
+      this.optionsBox.Size = new System.Drawing.Size(180, 46);
       this.optionsBox.TabIndex = 7;
       this.optionsBox.TabStop = false;
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs	(revision 14511)
@@ -62,7 +62,6 @@
 
       allInOneDataTable.Rows.Clear();
-      foreach (var variable in Content.VariableItemList.CheckedItems) {
-        allInOneDataTable.Rows.Add(allInOneDataRows[variable.Value.Value]);
-      }
+      var rows = Content.VariableItemList.CheckedItems.Select(v => allInOneDataRows[v.Value.Value]);
+      allInOneDataTable.Rows.AddRange(rows);
     }
 
@@ -83,12 +82,15 @@
       dt.Rows.Add(row);
 
-      try {
-        double axisMin, axisMax, axisInterval;
-        ChartUtil.CalculateOptimalAxisInterval(row.Values.Min(), row.Values.Max(), out axisMin, out axisMax, out axisInterval);
-        dt.VisualProperties.YAxisMinimumAuto = false;
-        dt.VisualProperties.YAxisMaximumAuto = false;
-        dt.VisualProperties.YAxisMinimumFixedValue = axisMin;
-        dt.VisualProperties.YAxisMaximumFixedValue = axisMax;
-      } catch (ArgumentOutOfRangeException) { } // missing values lead to NaNs
+      var validValues = row.Values.Where(x => !double.IsNaN(x) && !double.IsInfinity(x)).ToList();
+      if (validValues.Any()) {
+        try {
+          double axisMin, axisMax, axisInterval;
+          ChartUtil.CalculateOptimalAxisInterval(validValues.Min(), validValues.Max(), out axisMin, out axisMax, out axisInterval);
+          dt.VisualProperties.YAxisMinimumAuto = false;
+          dt.VisualProperties.YAxisMaximumAuto = false;
+          dt.VisualProperties.YAxisMinimumFixedValue = axisMin;
+          dt.VisualProperties.YAxisMaximumFixedValue = axisMax;
+        } catch (ArgumentOutOfRangeException) { }
+      }
       return dt;
     }
@@ -116,7 +118,6 @@
           // ToDo: avoid clearing all rows, but how?
           allInOneDataTable.Rows.Clear();
-          foreach (var variable in Content.VariableItemList.CheckedItems) {
-            allInOneDataTable.Rows.Add(allInOneDataRows[variable.Value.Value]);
-          }
+          var rows = Content.VariableItemList.CheckedItems.Select(r => allInOneDataRows[r.Value.Value]);
+          allInOneDataTable.Rows.AddRange(rows);
         } else {
           allInOneDataTable.Rows.Remove(variableName);
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs	(revision 14511)
@@ -66,5 +66,5 @@
 
     protected virtual int GetNumberOfVisibleDataTables() {
-      return checkedItemList.Content.CheckedItems.Count();
+      return Content.VariableItemList.CheckedItems.Count();
     }
 
@@ -150,6 +150,13 @@
     #endregion
 
+    protected override void CheckedChangedUpdate() {
+      GenerateLayout();
+    }
+
     #region Generate Layout
     protected void GenerateLayout() {
+      if (suppressCheckedChangedUpdate)
+        return;
+
       tableLayoutPanel.SuspendRepaint();
 
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.Designer.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.Designer.cs	(revision 14510)
+++ 	(revision )
@@ -1,55 +1,0 @@
-﻿#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
-
-namespace HeuristicLab.DataPreprocessing.Views {
-  partial class PreprocessingCheckedItemListView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-    }
-
-    #endregion
-  }
-}
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.cs	(revision 14510)
+++ 	(revision )
@@ -1,56 +1,0 @@
-﻿#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 HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.Data;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.DataPreprocessing.Views {
-
-  [View("PreprocessingCheckedItemList View")]
-  [Content(typeof(CheckedItemList<StringValue>), false)]
-  [Content(typeof(ICheckedItemList<StringValue>), false)]
-  public partial class PreprocessingCheckedItemListView : CheckedItemListView<StringValue> {
-
-    public new ICheckedItemList<StringValue> Content {
-      get { return (ICheckedItemList<StringValue>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public PreprocessingCheckedItemListView()
-      : base() {
-      InitializeComponent();
-      DisableDetails();
-    }
-
-    private void DisableDetails() {
-      splitContainer.Panel2Collapsed = true;
-      viewHost.Content = null;
-      showDetailsCheckBox.Visible = false;
-
-    }
-  }
-
-
-}
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedVariablesView.Designer.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedVariablesView.Designer.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedVariablesView.Designer.cs	(revision 14511)
@@ -47,14 +47,15 @@
       this.components = new System.ComponentModel.Container();
       this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.checkedItemList = new HeuristicLab.DataPreprocessing.Views.PreprocessingCheckedItemListView();
-      this.variablesListcontextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
-      this.checkInputsTargetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.checkOnlyInputsTargetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.checkAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.uncheckAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.uncheckAllButton = new System.Windows.Forms.Button();
+      this.checkAllButton = new System.Windows.Forms.Button();
+      this.checkInputsTargetButton = new System.Windows.Forms.Button();
+      this.variablesListView = new System.Windows.Forms.ListView();
+      this.columnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
       this.splitContainer.Panel1.SuspendLayout();
       this.splitContainer.SuspendLayout();
-      this.variablesListcontextMenuStrip.SuspendLayout();
+      this.groupBox1.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -62,4 +63,5 @@
       // 
       this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
       this.splitContainer.Location = new System.Drawing.Point(0, 0);
       this.splitContainer.Name = "splitContainer";
@@ -67,61 +69,77 @@
       // splitContainer.Panel1
       // 
-      this.splitContainer.Panel1.Controls.Add(this.checkedItemList);
+      this.splitContainer.Panel1.Controls.Add(this.groupBox1);
       this.splitContainer.Size = new System.Drawing.Size(654, 403);
-      this.splitContainer.SplitterDistance = 91;
+      this.splitContainer.SplitterDistance = 180;
       this.splitContainer.TabIndex = 7;
       // 
-      // checkedItemList
+      // groupBox1
       // 
-      this.checkedItemList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
+      this.groupBox1.Controls.Add(this.uncheckAllButton);
+      this.groupBox1.Controls.Add(this.checkAllButton);
+      this.groupBox1.Controls.Add(this.checkInputsTargetButton);
+      this.groupBox1.Controls.Add(this.variablesListView);
+      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox1.Location = new System.Drawing.Point(0, 0);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(180, 403);
+      this.groupBox1.TabIndex = 7;
+      this.groupBox1.TabStop = false;
+      this.groupBox1.Text = "Variables";
+      // 
+      // uncheckAllButton
+      // 
+      this.uncheckAllButton.Location = new System.Drawing.Point(66, 19);
+      this.uncheckAllButton.Name = "uncheckAllButton";
+      this.uncheckAllButton.Size = new System.Drawing.Size(24, 24);
+      this.uncheckAllButton.TabIndex = 7;
+      this.uncheckAllButton.Text = "N";
+      this.toolTip.SetToolTip(this.uncheckAllButton, "Uncheck all variables");
+      this.uncheckAllButton.UseVisualStyleBackColor = true;
+      this.uncheckAllButton.Click += new System.EventHandler(this.uncheckAllButton_Click);
+      // 
+      // checkAllButton
+      // 
+      this.checkAllButton.Location = new System.Drawing.Point(36, 19);
+      this.checkAllButton.Name = "checkAllButton";
+      this.checkAllButton.Size = new System.Drawing.Size(24, 24);
+      this.checkAllButton.TabIndex = 7;
+      this.checkAllButton.Text = "A";
+      this.toolTip.SetToolTip(this.checkAllButton, "Check all variables");
+      this.checkAllButton.UseVisualStyleBackColor = true;
+      this.checkAllButton.Click += new System.EventHandler(this.checkAllButton_Click);
+      // 
+      // checkInputsTargetButton
+      // 
+      this.checkInputsTargetButton.Location = new System.Drawing.Point(6, 19);
+      this.checkInputsTargetButton.Name = "checkInputsTargetButton";
+      this.checkInputsTargetButton.Size = new System.Drawing.Size(24, 24);
+      this.checkInputsTargetButton.TabIndex = 7;
+      this.checkInputsTargetButton.Text = "I";
+      this.toolTip.SetToolTip(this.checkInputsTargetButton, "Check only inputs and target variable");
+      this.checkInputsTargetButton.UseVisualStyleBackColor = true;
+      this.checkInputsTargetButton.Click += new System.EventHandler(this.checkInputsTargetButton_Click);
+      // 
+      // variablesListView
+      // 
+      this.variablesListView.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.checkedItemList.Caption = "View";
-      this.checkedItemList.Content = null;
-      this.checkedItemList.ContextMenuStrip = this.variablesListcontextMenuStrip;
-      this.checkedItemList.Location = new System.Drawing.Point(4, 4);
-      this.checkedItemList.Name = "checkedItemList";
-      this.checkedItemList.ReadOnly = false;
-      this.checkedItemList.Size = new System.Drawing.Size(84, 252);
-      this.checkedItemList.TabIndex = 4;
+      this.variablesListView.CheckBoxes = true;
+      this.variablesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.columnHeader});
+      this.variablesListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
+      this.variablesListView.HideSelection = false;
+      this.variablesListView.Location = new System.Drawing.Point(6, 49);
+      this.variablesListView.Name = "variablesListView";
+      this.variablesListView.Size = new System.Drawing.Size(168, 348);
+      this.variablesListView.TabIndex = 6;
+      this.variablesListView.UseCompatibleStateImageBehavior = false;
+      this.variablesListView.View = System.Windows.Forms.View.Details;
       // 
-      // variablesListcontextMenuStrip
+      // columnHeader
       // 
-      this.variablesListcontextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.checkInputsTargetToolStripMenuItem,
-            this.checkOnlyInputsTargetToolStripMenuItem,
-            this.checkAllToolStripMenuItem,
-            this.uncheckAllToolStripMenuItem});
-      this.variablesListcontextMenuStrip.Name = "variablesListcontextMenuStrip";
-      this.variablesListcontextMenuStrip.Size = new System.Drawing.Size(211, 92);
-      this.variablesListcontextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.variablesListcontextMenuStrip_Opening);
-      // 
-      // checkInputsTargetToolStripMenuItem
-      // 
-      this.checkInputsTargetToolStripMenuItem.Name = "checkInputsTargetToolStripMenuItem";
-      this.checkInputsTargetToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
-      this.checkInputsTargetToolStripMenuItem.Text = "Check Inputs+Target";
-      this.checkInputsTargetToolStripMenuItem.Click += new System.EventHandler(this.checkInputsTargetToolStripMenuItem_Click);
-      // 
-      // checkOnlyInputsTargetToolStripMenuItem
-      // 
-      this.checkOnlyInputsTargetToolStripMenuItem.Name = "checkOnlyInputsTargetToolStripMenuItem";
-      this.checkOnlyInputsTargetToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
-      this.checkOnlyInputsTargetToolStripMenuItem.Text = "Check only Inputs+Target";
-      this.checkOnlyInputsTargetToolStripMenuItem.Click += new System.EventHandler(this.checkOnlyInputsTargetToolStripMenuItem_Click);
-      // 
-      // checkAllToolStripMenuItem
-      // 
-      this.checkAllToolStripMenuItem.Name = "checkAllToolStripMenuItem";
-      this.checkAllToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
-      this.checkAllToolStripMenuItem.Text = "Check All";
-      this.checkAllToolStripMenuItem.Click += new System.EventHandler(this.checkAllToolStripMenuItem_Click);
-      // 
-      // uncheckAllToolStripMenuItem
-      // 
-      this.uncheckAllToolStripMenuItem.Name = "uncheckAllToolStripMenuItem";
-      this.uncheckAllToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
-      this.uncheckAllToolStripMenuItem.Text = "Uncheck All";
-      this.uncheckAllToolStripMenuItem.Click += new System.EventHandler(this.uncheckAllToolStripMenuItem_Click);
+      this.columnHeader.Text = "";
+      this.columnHeader.Width = 164;
       // 
       // PreprocessingCheckedVariablesView
@@ -135,5 +153,5 @@
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
       this.splitContainer.ResumeLayout(false);
-      this.variablesListcontextMenuStrip.ResumeLayout(false);
+      this.groupBox1.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -141,12 +159,12 @@
 
     #endregion
-
-    protected PreprocessingCheckedItemListView checkedItemList;
     protected System.Windows.Forms.SplitContainer splitContainer;
-    private System.Windows.Forms.ContextMenuStrip variablesListcontextMenuStrip;
-    private System.Windows.Forms.ToolStripMenuItem checkInputsTargetToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem checkAllToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem uncheckAllToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem checkOnlyInputsTargetToolStripMenuItem;
+    private System.Windows.Forms.ListView variablesListView;
+    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.ToolTip toolTip;
+    private System.Windows.Forms.ColumnHeader columnHeader;
+    private System.Windows.Forms.Button checkInputsTargetButton;
+    private System.Windows.Forms.Button uncheckAllButton;
+    private System.Windows.Forms.Button checkAllButton;
   }
 }
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedVariablesView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedVariablesView.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedVariablesView.cs	(revision 14511)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -26,4 +25,5 @@
 using System.Windows.Forms;
 using HeuristicLab.Collections;
+using HeuristicLab.Common.Resources;
 using HeuristicLab.Core.Views;
 using HeuristicLab.Data;
@@ -35,4 +35,6 @@
   public partial class PreprocessingCheckedVariablesView : ItemView {
 
+    protected bool suppressCheckedChangedUpdate = false;
+
     public new PreprocessingChartContent Content {
       get { return (PreprocessingChartContent)base.Content; }
@@ -42,4 +44,10 @@
     protected PreprocessingCheckedVariablesView() {
       InitializeComponent();
+      checkInputsTargetButton.Text = string.Empty;
+      checkInputsTargetButton.Image = VSImageLibrary.Namespace;
+      checkAllButton.Text = string.Empty;
+      checkAllButton.Image = VSImageLibrary.Expand;
+      uncheckAllButton.Text = string.Empty;
+      uncheckAllButton.Image = VSImageLibrary.Collapse;
     }
 
@@ -48,5 +56,5 @@
     }
     protected IList<string> GetCheckedVariables() {
-      return checkedItemList.Content.CheckedItems.Select(i => i.Value.Value).ToList();
+      return Content.VariableItemList.CheckedItems.Select(i => i.Value.Value).ToList();
     }
 
@@ -55,35 +63,38 @@
       if (Content == null) return;
 
-      if (Content.VariableItemList == null) {
-        IList<string> inputs = Content.PreprocessingData.InputVariables;
-        if (Content.PreprocessingData.TargetVariable != null)
-          inputs = inputs.Union(new[] { Content.PreprocessingData.TargetVariable }).ToList();
-        Content.VariableItemList = Content.CreateVariableItemList(inputs);
-      } else {
-        var checkedNames = Content.VariableItemList.CheckedItems.Select(x => x.Value.Value);
-        Content.VariableItemList = Content.CreateVariableItemList(checkedNames.ToList());
+      variablesListView.ItemChecked -= variablesListView_ItemChecked;
+      variablesListView.Items.Clear();
+      foreach (var variable in Content.VariableItemList) {
+        bool isInputTarget = Content.PreprocessingData.InputVariables.Contains(variable.Value)
+          || Content.PreprocessingData.TargetVariable == variable.Value;
+        variablesListView.Items.Add(new ListViewItem(variable.Value) {
+          Tag = variable,
+          Checked = IsVariableChecked(variable.Value),
+          ForeColor = isInputTarget ? Color.Black : Color.Gray
+        });
       }
-      Content.VariableItemList.CheckedItemsChanged += CheckedItemsChanged;
-
-      checkedItemList.Content = Content.VariableItemList;
-      var target = Content.PreprocessingData.TargetVariable;
-      var inputAndTarget = Content.PreprocessingData.InputVariables.Union(target != null ? new[] { target } : new string[] { });
-      foreach (var col in Content.PreprocessingData.GetDoubleVariableNames().Except(inputAndTarget)) {
-        var listViewItem = checkedItemList.ItemsListView.FindItemWithText(col, false, 0, false);
-        listViewItem.ForeColor = Color.LightGray;
-      }
+      variablesListView.ItemChecked += variablesListView_ItemChecked;
     }
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
       Content.PreprocessingData.Changed += PreprocessingData_Changed;
-      Content.PreprocessingData.SelectionChanged += PreprocessingData_SelctionChanged;
+      Content.VariableItemList.CheckedItemsChanged += CheckedItemsChanged;
     }
+
     protected override void DeregisterContentEvents() {
       Content.PreprocessingData.Changed -= PreprocessingData_Changed;
-      Content.PreprocessingData.SelectionChanged -= PreprocessingData_SelctionChanged;
+      Content.VariableItemList.CheckedItemsChanged -= CheckedItemsChanged;
       base.DeregisterContentEvents();
     }
 
     protected virtual void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) {
+      // sync listview
+      foreach (var item in checkedItems.Items)
+        variablesListView.Items[item.Index].Checked = Content.VariableItemList.ItemChecked(item.Value);
+    }
+    private void variablesListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
+      // sync checked item list
+      var variable = (StringValue)e.Item.Tag;
+      Content.VariableItemList.SetItemCheckedState(variable, e.Item.Checked);
     }
 
@@ -109,5 +120,5 @@
       Content.VariableItemList.Add(new StringValue(name));
       if (!Content.PreprocessingData.InputVariables.Contains(name) && Content.PreprocessingData.TargetVariable != name) {
-        var listViewItem = checkedItemList.ItemsListView.FindItemWithText(name, false, 0, false);
+        var listViewItem = variablesListView.FindItemWithText(name, false, 0, false);
         listViewItem.ForeColor = Color.LightGray;
       }
@@ -123,38 +134,35 @@
     }
 
-    protected virtual void PreprocessingData_SelctionChanged(object sender, EventArgs e) {
+    protected virtual void CheckedChangedUpdate() {
+
     }
 
-    #region ContextMenu Events
-    private void variablesListcontextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e) {
-      var data = Content.PreprocessingData;
-      checkInputsTargetToolStripMenuItem.Text = "Check Inputs" + (data.TargetVariable != null ? "+Target" : "");
-      checkOnlyInputsTargetToolStripMenuItem.Text = "Check only Inputs" + (data.TargetVariable != null ? "+Target" : "");
+    private void checkInputsTargetButton_Click(object sender, System.EventArgs e) {
+      suppressCheckedChangedUpdate = true;
+      foreach (var name in Content.VariableItemList) {
+        var isInputTarget = Content.PreprocessingData.InputVariables.Contains(name.Value) || Content.PreprocessingData.TargetVariable == name.Value;
+        Content.VariableItemList.SetItemCheckedState(name, isInputTarget);
+      }
+      suppressCheckedChangedUpdate = false;
+      CheckedChangedUpdate();
     }
-    private void checkInputsTargetToolStripMenuItem_Click(object sender, EventArgs e) {
-      foreach (var name in checkedItemList.Content) {
-        var isInputTarget = Content.PreprocessingData.InputVariables.Contains(name.Value) || Content.PreprocessingData.TargetVariable == name.Value;
-        if (isInputTarget) {
-          checkedItemList.Content.SetItemCheckedState(name, true);
-        }
+
+    private void checkAllButton_Click(object sender, System.EventArgs e) {
+      suppressCheckedChangedUpdate = true;
+      foreach (var name in Content.VariableItemList) {
+        Content.VariableItemList.SetItemCheckedState(name, true);
       }
+      suppressCheckedChangedUpdate = false;
+      CheckedChangedUpdate();
     }
-    private void checkOnlyInputsTargetToolStripMenuItem_Click(object sender, EventArgs e) {
-      foreach (var name in checkedItemList.Content) {
-        var isInputTarget = Content.PreprocessingData.InputVariables.Contains(name.Value) || Content.PreprocessingData.TargetVariable == name.Value;
-        checkedItemList.Content.SetItemCheckedState(name, isInputTarget);
+
+    private void uncheckAllButton_Click(object sender, System.EventArgs e) {
+      suppressCheckedChangedUpdate = true;
+      foreach (var name in Content.VariableItemList) {
+        Content.VariableItemList.SetItemCheckedState(name, false);
       }
+      suppressCheckedChangedUpdate = false;
+      CheckedChangedUpdate();
     }
-    private void checkAllToolStripMenuItem_Click(object sender, EventArgs e) {
-      foreach (var name in checkedItemList.Content) {
-        checkedItemList.Content.SetItemCheckedState(name, true);
-      }
-    }
-    private void uncheckAllToolStripMenuItem_Click(object sender, EventArgs e) {
-      foreach (var name in checkedItemList.Content) {
-        checkedItemList.Content.SetItemCheckedState(name, false);
-      }
-    }
-    #endregion
   }
 }
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.Designer.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.Designer.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.Designer.cs	(revision 14511)
@@ -70,8 +70,4 @@
       this.SuspendLayout();
       // 
-      // checkedItemList
-      // 
-      this.checkedItemList.Size = new System.Drawing.Size(113, 369);
-      // 
       // splitContainer
       // 
@@ -84,6 +80,4 @@
       // 
       this.splitContainer.Panel2.Controls.Add(this.frameTableLayoutPanel);
-      this.splitContainer.Size = new System.Drawing.Size(863, 520);
-      this.splitContainer.SplitterDistance = 120;
       // 
       // frameTableLayoutPanel
@@ -101,5 +95,5 @@
       this.frameTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
       this.frameTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
-      this.frameTableLayoutPanel.Size = new System.Drawing.Size(739, 520);
+      this.frameTableLayoutPanel.Size = new System.Drawing.Size(470, 403);
       this.frameTableLayoutPanel.TabIndex = 0;
       // 
@@ -188,13 +182,12 @@
       // sizeGroupBox
       // 
-      this.sizeGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
       this.sizeGroupBox.Controls.Add(this.heightLabel);
       this.sizeGroupBox.Controls.Add(this.widthLabel);
       this.sizeGroupBox.Controls.Add(this.heightTrackBar);
       this.sizeGroupBox.Controls.Add(this.widthTrackBar);
-      this.sizeGroupBox.Location = new System.Drawing.Point(4, 379);
+      this.sizeGroupBox.Dock = System.Windows.Forms.DockStyle.Bottom;
+      this.sizeGroupBox.Location = new System.Drawing.Point(0, 267);
       this.sizeGroupBox.Name = "sizeGroupBox";
-      this.sizeGroupBox.Size = new System.Drawing.Size(113, 124);
+      this.sizeGroupBox.Size = new System.Drawing.Size(180, 136);
       this.sizeGroupBox.TabIndex = 5;
       this.sizeGroupBox.TabStop = false;
@@ -227,5 +220,5 @@
       this.heightTrackBar.Maximum = 100;
       this.heightTrackBar.Name = "heightTrackBar";
-      this.heightTrackBar.Size = new System.Drawing.Size(101, 45);
+      this.heightTrackBar.Size = new System.Drawing.Size(168, 45);
       this.heightTrackBar.SmallChange = 10;
       this.heightTrackBar.TabIndex = 0;
@@ -242,5 +235,5 @@
       this.widthTrackBar.Maximum = 100;
       this.widthTrackBar.Name = "widthTrackBar";
-      this.widthTrackBar.Size = new System.Drawing.Size(101, 45);
+      this.widthTrackBar.Size = new System.Drawing.Size(168, 45);
       this.widthTrackBar.SmallChange = 10;
       this.widthTrackBar.TabIndex = 0;
@@ -254,5 +247,4 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Name = "ScatterPlotMultiView";
-      this.Size = new System.Drawing.Size(863, 520);
       this.splitContainer.Panel1.ResumeLayout(false);
       this.splitContainer.Panel2.ResumeLayout(false);
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotMultiView.cs	(revision 14511)
@@ -61,4 +61,6 @@
     protected override void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) {
       base.CheckedItemsChanged(sender, checkedItems);
+      if (suppressCheckedChangedUpdate)
+        return;
       foreach (var variable in checkedItems.Items.Select(i => i.Value.Value)) {
         if (IsVariableChecked(variable))
@@ -74,5 +76,5 @@
 
       // find index to insert 
-      var variables = checkedItemList.Content.Select(v => v.Value).ToList();
+      var variables = Content.VariableItemList.Select(v => v.Value).ToList();
       int idx = variables              // all variables
         .TakeWhile(t => t != variable) // ... until the variable that was checked
@@ -285,6 +287,12 @@
     #endregion
 
+    protected override void CheckedChangedUpdate() {
+      GenerateCharts();
+    }
+
     #region Generate Charts
     private void GenerateCharts() {
+      if (suppressCheckedChangedUpdate) return;
+
       var variables = GetCheckedVariables();
 
@@ -365,5 +373,5 @@
       DataTableControl pcv = (DataTableControl)sender;
       HistogramContent histoContent = new HistogramContent(Content.PreprocessingData);  // create new content     
-      histoContent.VariableItemList = Content.CreateVariableItemList();
+      //ToDo: histoContent.VariableItemList = Content.CreateVariableItemList();
       var dataTable = pcv.Content;
 
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/PreprocessingChartContent.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/PreprocessingChartContent.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/PreprocessingChartContent.cs	(revision 14511)
@@ -36,6 +36,10 @@
     private ICheckedItemList<StringValue> variableItemList = null;
     public ICheckedItemList<StringValue> VariableItemList {
-      get { return this.variableItemList; }
-      set { this.variableItemList = value; }
+      get {
+        if (variableItemList == null)
+          variableItemList = CreateVariableItemList();
+        return this.variableItemList;
+      }
+      //set { this.variableItemList = value; }
     }
 
@@ -65,10 +69,10 @@
 
 
-    public ICheckedItemList<StringValue> CreateVariableItemList(IList<string> checkedItems = null) {
-      if (checkedItems == null) checkedItems = new string[0];
+    public ICheckedItemList<StringValue> CreateVariableItemList() {
       ICheckedItemList<StringValue> itemList = new CheckedItemList<StringValue>();
       foreach (string name in PreprocessingData.GetDoubleVariableNames()) {
         var n = new StringValue(name);
-        itemList.Add(n, checkedItems.Contains(name));
+        bool isInputTarget = PreprocessingData.InputVariables.Contains(name) || PreprocessingData.TargetVariable == name;
+        itemList.Add(n, isInputTarget);
       }
       return new ReadOnlyCheckedItemList<StringValue>(itemList);
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/ScatterPlotContent.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/ScatterPlotContent.cs	(revision 14510)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/ScatterPlotContent.cs	(revision 14511)
@@ -42,11 +42,13 @@
       ScatterPlot scatterPlot = new ScatterPlot();
 
-      IList<double> xValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameX)).Where(x => !double.IsNaN(x) && !double.IsInfinity(x)).ToList();
-      IList<double> yValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameY)).Where(x => !double.IsNaN(x) && !double.IsInfinity(x)).ToList();
+      IList<double> xValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameX));
+      IList<double> yValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameY));
 
-      if (xValues.Any()) {
+      var points = xValues.Zip(yValues, (x, y) => new Point2D<double>(x, y)).ToList();
+      var validPoints = points.Where(p => !double.IsNaN(p.X) && !double.IsNaN(p.Y) && !double.IsInfinity(p.X) && !double.IsInfinity(p.Y)).ToList();
+      if (validPoints.Any()) {
         try {
           double axisMin, axisMax, axisInterval;
-          ChartUtil.CalculateOptimalAxisInterval(xValues.Min(), xValues.Max(), out axisMin, out axisMax, out axisInterval);
+          ChartUtil.CalculateOptimalAxisInterval(validPoints.Min(p => p.X), validPoints.Max(p => p.X), out axisMin, out axisMax, out axisInterval);
           scatterPlot.VisualProperties.XAxisMinimumAuto = false;
           scatterPlot.VisualProperties.XAxisMaximumAuto = false;
@@ -54,9 +56,7 @@
           scatterPlot.VisualProperties.XAxisMaximumFixedValue = axisMax;
         } catch (ArgumentOutOfRangeException) { } // error during CalculateOptimalAxisInterval 
-      }
-      if (yValues.Any()) {
         try {
           double axisMin, axisMax, axisInterval;
-          ChartUtil.CalculateOptimalAxisInterval(yValues.Min(), yValues.Max(), out axisMin, out axisMax, out axisInterval);
+          ChartUtil.CalculateOptimalAxisInterval(validPoints.Min(p => p.Y), validPoints.Max(p => p.Y), out axisMin, out axisMax, out axisInterval);
           scatterPlot.VisualProperties.YAxisMinimumAuto = false;
           scatterPlot.VisualProperties.YAxisMaximumAuto = false;
@@ -67,24 +67,13 @@
 
       if (variableNameGroup == null || variableNameGroup == "-") {
-        List<Point2D<double>> points = new List<Point2D<double>>();
-
-        for (int i = 0; i < xValues.Count; i++) {
-          Point2D<double> point = new Point2D<double>(xValues[i], yValues[i]);
-          points.Add(point);
-        }
-
-        ScatterPlotDataRow scdr = new ScatterPlotDataRow(variableNameX + " - " + variableNameY, "", points);
+        ScatterPlotDataRow scdr = new ScatterPlotDataRow(variableNameX + " - " + variableNameY, "", validPoints);
         scdr.VisualProperties.IsVisibleInLegend = false;
         scatterPlot.Rows.Add(scdr);
-
       } else {
         var groupValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameGroup));
-        var data = xValues.Zip(yValues, (x, y) => new { x, y }).Zip(groupValues, (v, c) => new { v.x, v.y, c }).ToList();
+        var data = points.Zip(groupValues, (p, g) => new { p, g });
         foreach (var groupValue in groupValues.Distinct()) {
-          var values = data.Where(x => x.c == groupValue);
-          var row = new ScatterPlotDataRow(
-            variableNameGroup + " (" + groupValue + ")",
-            "",
-            values.Select(v => new Point2D<double>(v.x, v.y))) {
+          var values = data.Where(x => x.g == groupValue).Select(v => v.p);
+          var row = new ScatterPlotDataRow(string.Format("{0} ({1})", variableNameGroup, groupValue), "", values) {
             VisualProperties = { PointSize = 6 }
           };
