Index: branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.Designer.cs
===================================================================
--- branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.Designer.cs	(revision 1398)
+++ branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.Designer.cs	(revision 1399)
@@ -25,7 +25,7 @@
     private void InitializeComponent() {
       System.Windows.Forms.TabPage nullFormatterConfig;
-      System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem("Bli");
-      System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem("Bla");
-      System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem("Blo");
+      System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("Bli");
+      System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("Bla");
+      System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("Blo");
       this.dataGridView1 = new System.Windows.Forms.DataGridView();
       this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -36,6 +36,6 @@
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
       this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-      this.checkbox = new System.Windows.Forms.CheckedListBox();
       this.formatterTabs = new System.Windows.Forms.TabControl();
+      this.checkBox = new System.Windows.Forms.ListBox();
       nullFormatterConfig = new System.Windows.Forms.TabPage();
       nullFormatterConfig.SuspendLayout();
@@ -100,15 +100,15 @@
       this.decomposerList.GridLines = true;
       this.decomposerList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
-      listViewItem4.Checked = true;
-      listViewItem4.StateImageIndex = 1;
-      listViewItem4.Tag = "";
-      listViewItem5.Checked = true;
-      listViewItem5.StateImageIndex = 1;
-      listViewItem6.Checked = true;
-      listViewItem6.StateImageIndex = 1;
+      listViewItem1.Checked = true;
+      listViewItem1.StateImageIndex = 1;
+      listViewItem1.Tag = "";
+      listViewItem2.Checked = true;
+      listViewItem2.StateImageIndex = 1;
+      listViewItem3.Checked = true;
+      listViewItem3.StateImageIndex = 1;
       this.decomposerList.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
-            listViewItem4,
-            listViewItem5,
-            listViewItem6});
+            listViewItem1,
+            listViewItem2,
+            listViewItem3});
       this.decomposerList.Location = new System.Drawing.Point(0, 0);
       this.decomposerList.Name = "decomposerList";
@@ -159,19 +159,8 @@
       // splitContainer2.Panel2
       // 
-      this.splitContainer2.Panel2.Controls.Add(this.checkbox);
+      this.splitContainer2.Panel2.Controls.Add(this.checkBox);
       this.splitContainer2.Size = new System.Drawing.Size(199, 580);
       this.splitContainer2.SplitterDistance = 290;
       this.splitContainer2.TabIndex = 1;
-      // 
-      // checkbox
-      // 
-      this.checkbox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.checkbox.Enabled = false;
-      this.checkbox.FormattingEnabled = true;
-      this.checkbox.Location = new System.Drawing.Point(0, 0);
-      this.checkbox.Name = "checkbox";
-      this.checkbox.Size = new System.Drawing.Size(199, 274);
-      this.checkbox.TabIndex = 1;
-      this.checkbox.ThreeDCheckBoxes = true;
       // 
       // formatterTabs
@@ -184,4 +173,13 @@
       this.formatterTabs.Size = new System.Drawing.Size(394, 580);
       this.formatterTabs.TabIndex = 0;
+      // 
+      // checkBox
+      // 
+      this.checkBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.checkBox.FormattingEnabled = true;
+      this.checkBox.Location = new System.Drawing.Point(0, 0);
+      this.checkBox.Name = "checkBox";
+      this.checkBox.Size = new System.Drawing.Size(199, 277);
+      this.checkBox.TabIndex = 0;
       // 
       // PersistenceConfigurationForm
@@ -211,5 +209,4 @@
     private System.Windows.Forms.ColumnHeader DecomposersColumn;
     private System.Windows.Forms.SplitContainer splitContainer1;
-    private System.Windows.Forms.CheckedListBox checkbox;
     private System.Windows.Forms.SplitContainer splitContainer2;
     private System.Windows.Forms.TabControl formatterTabs;
@@ -218,4 +215,5 @@
     private System.Windows.Forms.DataGridViewCheckBoxColumn Column2;
     private System.Windows.Forms.DataGridViewComboBoxColumn Column3;
+    private System.Windows.Forms.ListBox checkBox;
   }
 }
Index: branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.cs
===================================================================
--- branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.cs	(revision 1398)
+++ branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.cs	(revision 1399)
@@ -13,10 +13,114 @@
 
     private readonly Dictionary<string, IFormatter> formatterTable;
-    private readonly Dictionary<string, Type> typeNameTable;    
+    private readonly Dictionary<IFormatter, string> reverseFormatterTable;    
+    private readonly Dictionary<string, Type> typeNameTable;
+    private readonly Dictionary<Type, string> reverseTypeNameTable;
 
     public PersistenceConfigurationForm() {
       InitializeComponent();
       formatterTable = new Dictionary<string, IFormatter>();
+      reverseFormatterTable = new Dictionary<IFormatter, string>();
       typeNameTable = new Dictionary<string, Type>();
+      reverseTypeNameTable = new Dictionary<Type, string>();
+      initializeDecomposerList();
+      initializeFormatterPages();
+    }
+
+    private void initializeFormatterPages() {
+      formatterTabs.TabPages.Clear();
+      foreach ( var formats in ConfigurationService.Instance.AllFormatters ) {
+        TabPage page = new TabPage(formats.Key.Name) {Tag = formats.Key};
+        formatterTabs.TabPages.Add(page);
+        DataGridView gridView = new DataGridView {
+                                                   Dock = DockStyle.Fill,
+                                                   EditMode = DataGridViewEditMode.EditOnEnter,
+                                                   AllowUserToAddRows = false,
+                                                   AllowUserToDeleteRows = false,
+                                                   AllowUserToResizeRows = false,
+                                                   Name = "GridView",
+                                                 };
+        gridView.CellValueChanged += gridView_CellValueChanged;
+        gridView.Columns.Add(new DataGridViewTextBoxColumn {
+          Name = "Type", ReadOnly = true,
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
+        });
+        gridView.Columns.Add(new DataGridViewCheckBoxColumn {
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells});
+        gridView.Columns.Add(new DataGridViewComboBoxColumn {
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill});
+        page.Controls.Add(gridView);
+        fillDataGrid(gridView, formats.Value);
+      }
+    }
+
+    private void fillDataGrid(DataGridView gridView, IEnumerable<IFormatter> formatters) {      
+      updateNameTables(formatters);
+      Dictionary<string, List<string>> formatterMap = createFormatterMap(formatters);
+      foreach ( var formatterMapping in formatterMap ) {
+        var row = gridView.Rows[gridView.Rows.Add()];
+        row.Cells[0].Value = formatterMapping.Key;
+        row.Cells[0].ToolTipText = formatterMapping.Key;
+        row.Cells[1].Value = true;
+        var comboBoxCell = (DataGridViewComboBoxCell) row.Cells[2];          
+        foreach ( var formatter in formatterMapping.Value ) {
+          comboBoxCell.Items.Add(formatter);
+        }          
+        comboBoxCell.Value = comboBoxCell.Items[0];          
+        comboBoxCell.ToolTipText = comboBoxCell.Items[0].ToString();
+        if (comboBoxCell.Items.Count == 1) {
+          comboBoxCell.ReadOnly = true;
+          comboBoxCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
+        }     
+      }
+    }
+
+    private Dictionary<string, List<string>> createFormatterMap(IEnumerable<IFormatter> formatters) {
+      var formatterMap = new Dictionary<string, List<string>>();      
+      foreach (var formatter in formatters) {
+        string formatterName = reverseFormatterTable[formatter];
+        string typeName = reverseTypeNameTable[formatter.Type];          
+        if (!formatterMap.ContainsKey(typeName))
+          formatterMap.Add(typeName, new List<string>());
+        formatterMap[typeName].Add(formatterName);
+      }
+      return formatterMap;
+    }
+
+    private void updateNameTables(IEnumerable<IFormatter> formatters) {
+      foreach (var formatter in formatters) {
+        string formatterName = formatter.GetType().Name;
+        if (formatterTable.ContainsKey(formatterName)) {
+          IFormatter otherFormatter = formatterTable[formatterName];
+          formatterTable.Remove(formatterName);
+          reverseFormatterTable.Remove(otherFormatter);
+          formatterTable.Add(otherFormatter.GetType().FullName, otherFormatter);
+          reverseFormatterTable.Add(otherFormatter, otherFormatter.GetType().FullName);
+          formatterName = formatter.GetType().FullName;
+        }
+        formatterTable.Add(formatterName, formatter);
+        reverseFormatterTable.Add(formatter, formatterName);
+
+        string typeName = formatter.Type.IsGenericType ?
+          formatter.Type.SimpleFullName() : 
+          formatter.Type.Name;
+        if (typeNameTable.ContainsKey(typeName)) {
+          Type otherType = typeNameTable[typeName];
+          if (otherType != formatter.Type) {
+            typeNameTable.Remove(typeName);
+            reverseTypeNameTable.Remove(otherType);
+            typeNameTable.Add(otherType.FullName, otherType);
+            reverseTypeNameTable.Add(otherType, otherType.FullName);
+            typeName = formatter.Type.FullName;
+            typeNameTable.Add(typeName, formatter.Type);
+            reverseTypeNameTable.Add(formatter.Type, typeName);
+          }
+        } else {
+          typeNameTable.Add(typeName, formatter.Type);
+          reverseTypeNameTable.Add(formatter.Type, typeName);
+        }          
+      }
+    }
+
+    private void initializeDecomposerList() {
       decomposerList.Items.Clear();
       foreach ( IDecomposer decomposer in ConfigurationService.Instance.AllDecomposers ) {
@@ -24,79 +128,4 @@
         item.Checked = true;
         item.Tag = decomposer;
-      }
-
-      foreach ( var formats in ConfigurationService.Instance.AllFormatters ) {
-        TabPage page = new TabPage(formats.Key.Name) {Tag = formats.Key};
-        formatterTabs.TabPages.Add(page);
-        DataGridView gridView = new DataGridView {
-          Dock = DockStyle.Fill,
-          EditMode = DataGridViewEditMode.EditOnEnter,
-          AllowUserToAddRows = false,
-          AllowUserToDeleteRows = false,
-          AllowUserToResizeRows = false,
-          Name = "GridView",
-        };
-        gridView.CellValueChanged += gridView_CellValueChanged;
-        page.Controls.Add(gridView);        
-        gridView.Columns.Add(new DataGridViewTextBoxColumn {
-          Name = "Type", ReadOnly = true,
-          AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
-        });
-        gridView.Columns.Add(new DataGridViewCheckBoxColumn
-          { AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells });
-        gridView.Columns.Add(new DataGridViewComboBoxColumn
-          { AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill });                
-        var formatterMap = new Dictionary<string, List<string>>();
-        foreach (var formatter in formats.Value) {
-          string formatterName = formatter.GetType().Name;
-          if (formatterTable.ContainsKey(formatterName)) {
-            IFormatter otherFormatter = formatterTable[formatterName];
-            formatterTable.Remove(formatterName);
-            formatterTable.Add(otherFormatter.GetType().FullName, otherFormatter);
-            formatterName = formatter.GetType().FullName;
-          }
-          formatterTable.Add(formatterName, formatter);
-          string typeName = formatter.Type.Name;
-          if (typeNameTable.ContainsKey(typeName)) {
-            Type otherType = typeNameTable[typeName];
-            if (otherType != formatter.Type) {
-              typeNameTable.Remove(typeName);
-              typeNameTable.Add(otherType.FullName, otherType);
-              typeName = formatter.Type.FullName;
-              typeNameTable.Add(typeName, formatter.Type);
-            }
-          } else {
-            typeNameTable.Add(typeName, formatter.Type);
-          }          
-        }
-        foreach (var formatter in formats.Value) {          
-          string formatterName = 
-            formatterTable.ContainsKey(formatter.GetType().Name) ?
-            formatter.GetType().Name :
-            formatter.GetType().FullName;
-          string typeName =
-            typeNameTable.ContainsKey(formatter.Type.Name) ?
-            formatter.Type.Name :
-            formatter.Type.FullName;          
-          if (!formatterMap.ContainsKey(typeName))
-            formatterMap.Add(typeName, new List<string>());
-          formatterMap[typeName].Add(formatterName);
-        }
-        foreach ( var formatterMapping in formatterMap ) {
-          var row = gridView.Rows[gridView.Rows.Add()];
-          row.Cells[0].Value = formatterMapping.Key;
-          row.Cells[0].ToolTipText = formatterMapping.Key;
-          row.Cells[1].Value = true;
-          var comboBoxCell = (DataGridViewComboBoxCell) row.Cells[2];          
-          foreach ( var formatter in formatterMapping.Value ) {
-            comboBoxCell.Items.Add(formatter);
-          }          
-          comboBoxCell.Value = comboBoxCell.Items[0];          
-          comboBoxCell.ToolTipText = comboBoxCell.Items[0].ToString();
-          if (comboBoxCell.Items.Count == 1) {
-            comboBoxCell.ReadOnly = true;
-            comboBoxCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
-          }     
-        }      
       }
     }
@@ -155,13 +184,13 @@
 
     private void UpdatePreview() {
-      checkbox.Items.Clear();      
-      foreach (var decomposer in GetDecomposers())
-        checkbox.Items.Add(decomposer.GetType().Name + " (D)");
-      IFormat activeFormat = (IFormat) formatterTabs.SelectedTab.Tag;
+      checkBox.Items.Clear();
+      IFormat activeFormat = (IFormat)formatterTabs.SelectedTab.Tag;
       if (activeFormat != null) {
         foreach (var formatter in GetCurrentConfiguration(activeFormat).Formatters) {
-          checkbox.Items.Add(formatter.GetType().Name + " (F)");
-        }
-      }
+          checkBox.Items.Add(formatter.GetType().Name + " (F)");
+        }
+      }
+      foreach (var decomposer in GetDecomposers())
+        checkBox.Items.Add(decomposer.GetType().Name + " (D)");      
     }
 
@@ -177,8 +206,8 @@
           if (controls.Length == 1) {
             foreach (DataGridViewRow row in ((DataGridView) controls[0]).Rows) {
-              if ( row.Cells[1].Value != null &&
-                row.Cells[0].Value != null &&
-                row.Cells[2].Value != null &&
-                (bool)row.Cells[1].Value == true ) {                
+              if ( row.Cells[0].Value != null &&
+                   row.Cells[1].Value != null &&
+                   row.Cells[2].Value != null &&
+                   (bool)row.Cells[1].Value == true ) {
                 formatters.Add(
                   typeNameTable[(string)row.Cells[0].Value],                  
@@ -206,15 +235,15 @@
     public object Parse(object o) {
       return null;
-    }
-    
-  }
-
-  public class FormatterWrapper {
-    public IFormatter Formatter;
-    public FormatterWrapper(IFormatter f) {
-      Formatter = f;
-    }
-    public override string ToString() {
-      return Formatter.GetType().Name;
+    }    
+  }  
+
+  public class Int2XmlFormatter: IFormatter {
+    public Type Type { get { return typeof (int);  } }
+    public IFormat Format { get { return XmlFormat.Instance; } }
+    public object DoFormat(object o) {
+      return null;
+    }
+    public object Parse(object o) {
+      return null;
     }
   }
Index: branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.resx
===================================================================
--- branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.resx	(revision 1398)
+++ branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.resx	(revision 1399)
@@ -130,12 +130,3 @@
     <value>True</value>
   </metadata>
-  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
