Index: /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Command/ChangeColumnGroup/SplitDictionaryStyleDataCommand.cs
===================================================================
--- /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Command/ChangeColumnGroup/SplitDictionaryStyleDataCommand.cs	(revision 8386)
+++ /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Command/ChangeColumnGroup/SplitDictionaryStyleDataCommand.cs	(revision 8387)
@@ -23,5 +23,4 @@
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
 using HeuristicLab.DataImporter.Data;
 using HeuristicLab.DataImporter.Data.CommandBase;
@@ -32,5 +31,5 @@
   [StorableClass]
   [ViewableCommandInfo("Split Dictionary-style Data", 1, ColumnGroupState.ColumnSelected | ColumnGroupState.Sorted, "Column Commands",
-    Position = 15, SelectedColumns = 2)]
+    Position = 15)]
   public class SplitDictionaryStyleDataCommand : ColumnGroupCommandWithAffectedColumnsBase {
     private int addedColumnsCount;
@@ -50,5 +49,4 @@
     public override void Execute() {
       base.Execute();
-      Dictionary<IComparable, ColumnBase> newColumns = new Dictionary<IComparable, ColumnBase>(); ;
       if (ColumnGroup.SortedColumnIndexes.Except(AffectedColumns).Count() != 1 &&
         ColumnGroup.SortedColumnIndexes.Except(AffectedColumns).FirstOrDefault() == ColumnGroup.SortedColumnIndexes.ElementAt(0))
@@ -56,39 +54,48 @@
       if (AffectedColumns.Intersect(ColumnGroup.SortedColumnIndexes).Count() != 1)
         throw new CommandExecutionException("Exactly one column must be sorted and selected to define the column which holds the grouping value.", this);
-      if (AffectedColumns.Except(ColumnGroup.SortedColumnIndexes).Count() != 1)
+      if (!AffectedColumns.Except(ColumnGroup.SortedColumnIndexes).Any())
         throw new CommandExecutionException("At least one column must not be sorted but selected to define the column which holds the values for new columns.", this);
 
-      ColumnBase equalityColumn = ColumnGroup.GetColumn(ColumnGroup.SortedColumnIndexes.Except(AffectedColumns).ElementAt(0));
-      if (equalityColumn.ContainsNullValues)
-        throw new CommandExecutionException("Column which defines the equality (" + equalityColumn.Name + ") must not contain NULL values.", this);
+      Dictionary<IComparable, List<ColumnBase>> newColumns = new Dictionary<IComparable, List<ColumnBase>>();
 
-      ColumnBase groupColumn = ColumnGroup.GetColumn(ColumnGroup.SortedColumnIndexes.Intersect(AffectedColumns).ElementAt(0));
-      ColumnBase valueColumn = ColumnGroup.GetColumn(AffectedColumns.Except(ColumnGroup.SortedColumnIndexes).ElementAt(0));
+      ColumnBase groupColumn = ColumnGroup.GetColumn(ColumnGroup.SortedColumnIndexes.Except(AffectedColumns).First());
+      if (groupColumn.ContainsNullValues) throw new CommandExecutionException("Column which defines the equality (" + groupColumn.Name + ") must not contain NULL values.", this);
 
-      IComparable equalityValue = equalityColumn.GetValue(0); ;
-      IComparable groupValue;
+      ColumnBase splitColumn = ColumnGroup.GetColumn(ColumnGroup.SortedColumnIndexes.Intersect(AffectedColumns).First());
+      var valueColumns = AffectedColumns.Except(ColumnGroup.SortedColumnIndexes).Select(index => ColumnGroup.GetColumn(index)).ToList();
+
+      IComparable groupValue = groupColumn.GetValue(0); ;
+      IComparable splitValue;
       int groupStartIndex = 0;
       for (int row = 0; row < ColumnGroup.RowCount; row++) {
         //check if equality value is still the same
-        if (equalityValue.CompareTo(equalityColumn.GetValue(row)) != 0) {
-          equalityValue = equalityColumn.GetValue(row);
+        if (groupValue.CompareTo(groupColumn.GetValue(row)) != 0) {
+          groupValue = groupColumn.GetValue(row);
           groupStartIndex = row;
         }
-        groupValue = groupColumn.GetValue(row);
+        splitValue = splitColumn.GetValue(row);
+
         //create new column if new group value was detected
-        if (!newColumns.ContainsKey(groupValue)) {
-          newColumns.Add(groupValue, valueColumn.CreateCopyOfColumnWithoutValues());
-          newColumns[groupValue].Resize(ColumnGroup.RowCount);
-          newColumns[groupValue].Name += "_" + groupValue;
+        if (!newColumns.ContainsKey(splitValue)) {
+          newColumns.Add(splitValue, new List<ColumnBase>(valueColumns.Count));
+          int i = 0;
+          foreach (var valueColumn in valueColumns) {
+            var newColumn = valueColumn.CreateCopyOfColumnWithoutValues(valueColumn.TotalValuesCount);
+            newColumn.Name += "_" + splitValue;
+            newColumn.Resize(ColumnGroup.RowCount);
+            newColumns[splitValue].Add(newColumn);
+            i++;
+          }
         }
 
-        for (int i = groupStartIndex; i < row; i++)
-          newColumns[groupValue].ChangeValue(i, valueColumn.GetValue(row));
-        for (int i = row; i < ColumnGroup.RowCount && equalityValue.CompareTo(equalityColumn.GetValue(i)) == 0; i++)
-          newColumns[groupValue].ChangeValue(i, valueColumn.GetValue(row));
+
+        for (int i = groupStartIndex; i < ColumnGroup.RowCount && groupValue.CompareTo(groupColumn.GetValue(i)) == 0; i++) {
+          for (int col = 0; col < valueColumns.Count; col++)
+            newColumns[splitValue][col].ChangeValue(i, valueColumns[col].GetValue(row));
+        }
       }
 
-      ColumnGroup.AddColumns(newColumns.Values);
-      addedColumnsCount = newColumns.Count;
+      ColumnGroup.AddColumns(newColumns.Values.SelectMany(col => col));
+      addedColumnsCount = newColumns.Values.Sum(columns => columns.Count);
       this.ColumnGroup.FireChanged();
       this.ColumnGroup = null;
Index: /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/Command/DeleteColumnCommand.cs
===================================================================
--- /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/Command/DeleteColumnCommand.cs	(revision 8386)
+++ /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/Command/DeleteColumnCommand.cs	(revision 8387)
@@ -20,8 +20,6 @@
 #endregion
 
-using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
 using System.Windows.Forms;
 using HeuristicLab.DataImporter.Data.CommandBase;
@@ -51,5 +49,5 @@
 
       ColumnBase column;
-      foreach (int columnIndex in AffectedColumns.Reverse()) {
+      foreach (int columnIndex in AffectedColumns.OrderByDescending(i => i)) {
         column = ColumnGroup.GetColumn(columnIndex);
         deletedColumns.Insert(0, column);
Index: /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/CommandBase/ColumnGroupCommandBase.cs
===================================================================
--- /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/CommandBase/ColumnGroupCommandBase.cs	(revision 8386)
+++ /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/CommandBase/ColumnGroupCommandBase.cs	(revision 8387)
@@ -20,9 +20,5 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Xml;
 using HeuristicLab.DataImporter.Data.Model;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -47,5 +43,5 @@
 
     protected void UpdateColumnGroup() {
-      this.columnGroup = this.DataSet.ColumnGroups.Where(cg => cg.Name == this.columnGroupName).FirstOrDefault();
+      this.columnGroup = this.DataSet.ColumnGroups.FirstOrDefault(cg => cg.Name == this.columnGroupName);
     }
 
Index: /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/Model/ColumnBase.cs
===================================================================
--- /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/Model/ColumnBase.cs	(revision 8386)
+++ /branches/HeuristicLab.DataImporter/HeuristicLab.DataImporter.Data/Model/ColumnBase.cs	(revision 8387)
@@ -21,10 +21,5 @@
 
 using System;
-using System.Collections.Generic;
 using System.Collections;
-using System.Linq;
-using System.Text;
-using System.Xml;
-using System.Globalization;
 using System.Windows.Forms;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
