Index: branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.cs
===================================================================
--- branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.cs	(revision 1400)
+++ branches/New Persistence Exploration/Persistence/HeuristicLab.Persistence.GUI/PersistenceConfigurationForm.cs	(revision 1401)
@@ -8,4 +8,5 @@
 using HeuristicLab.Persistence.Interfaces;
 using System.Text;
+using HeuristicLab.Persistence.Default.Decomposers;
 
 namespace HeuristicLab.Persistence.GUI {
@@ -26,4 +27,47 @@
       initializeDecomposerList();
       initializeFormatterPages();
+      ConfigurationService.Instance.DefineConfiguration(
+        XmlFormat.Instance,
+        new Configuration(
+          new Dictionary<Type, IFormatter> {{typeof (bool), new FakeBoolean2XmlFormatter()}},
+          new List<IDecomposer>{new ArrayDecomposer(), new DictionaryDecomposer()}));          
+      initializeFromConfigurationService();
+    }
+
+    private void initializeFromConfigurationService() {
+      foreach ( IFormat format in ConfigurationService.Instance.Formatters.Keys ) {
+        Configuration config = ConfigurationService.Instance.GetConfiguration(format);
+        foreach (ListViewItem item in decomposerList.Items) {
+          if (item != null) {
+            string name = item.Tag.GetType().AssemblyQualifiedName;
+            item.Checked =
+              config.Decomposers.Count(
+                d => d.GetType().AssemblyQualifiedName == name) > 0;
+              
+          }
+        }
+        foreach ( TabPage page in formatterTabs.TabPages ) {
+          if (page.Tag == format) {
+            DataGridView gridView = (DataGridView)page.Controls.Find("GridView", false)[0];
+            foreach ( DataGridViewRow row in gridView.Rows ) {
+              if (row.Cells["Type"] != null) {
+                IFormatter formatter = config.GetFormatter(typeNameTable[(string) row.Cells["Type"].Value]);
+                if (formatter == null) {
+                  row.Cells["Active"].Value = false;
+                } else {
+                  foreach (var pair in formatterTable) {
+                    if ( pair.Value.GetType().AssemblyQualifiedName == formatter.GetType().AssemblyQualifiedName ) {
+                      row.Cells["Formatter"].Value = pair.Key;
+                      row.Cells["Active"].Value = true;
+                      break;
+                    }                    
+                  }                                
+                }
+              }
+              break;
+            }
+          }
+        }        
+      }
     }
 
@@ -34,4 +78,5 @@
         formatterTabs.TabPages.Add(page);
         DataGridView gridView = new DataGridView {
+          Name = "GridView",
           Dock = DockStyle.Fill,
           EditMode = DataGridViewEditMode.EditOnEnter,
@@ -39,7 +84,7 @@
           AllowUserToDeleteRows = false,
           AllowUserToResizeRows = false,
-          Name = "GridView",
+          AllowUserToOrderColumns = true,
         };
-        gridView.CellValueChanged += gridView_CellValueChanged;
+        gridView.CellValueChanged += gridView_CellValueChanged;        
         gridView.Columns.Add(new DataGridViewTextBoxColumn {
           Name = "Type", ReadOnly = true,
@@ -47,6 +92,8 @@
         });
         gridView.Columns.Add(new DataGridViewCheckBoxColumn {
+          Name = "Active",
           AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells});
         gridView.Columns.Add(new DataGridViewComboBoxColumn {
+          Name = "Formatter",
           AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill});
         page.Controls.Add(gridView);
@@ -60,7 +107,7 @@
       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;
+        row.Cells["Type"].Value = formatterMapping.Key;
+        row.Cells["Active"].ToolTipText = formatterMapping.Key;
+        row.Cells["Formatter"].Value = true;
         var comboBoxCell = (DataGridViewComboBoxCell) row.Cells[2];          
         foreach ( var formatter in formatterMapping.Value ) {
@@ -207,11 +254,11 @@
           if (controls.Length == 1) {
             foreach (DataGridViewRow row in ((DataGridView) controls[0]).Rows) {
-              if ( row.Cells[0].Value != null &&
-                   row.Cells[1].Value != null &&
-                   row.Cells[2].Value != null &&
-                   (bool)row.Cells[1].Value == true ) {
+              if ( row.Cells["Type"].Value != null &&
+                   row.Cells["Active"].Value != null &&
+                   row.Cells["Formatter"].Value != null &&
+                   (bool)row.Cells["Active"].Value == true ) {
                 formatters.Add(
-                  typeNameTable[(string)row.Cells[0].Value],                  
-                  formatterTable[(string)row.Cells[2].Value]);
+                  typeNameTable[(string)row.Cells["Type"].Value],                  
+                  formatterTable[(string)row.Cells["Formatter"].Value]);
               }
             }
Index: branches/New Persistence Exploration/Persistence/Persistence/Core/Configuration.cs
===================================================================
--- branches/New Persistence Exploration/Persistence/Persistence/Core/Configuration.cs	(revision 1400)
+++ branches/New Persistence Exploration/Persistence/Persistence/Core/Configuration.cs	(revision 1401)
@@ -31,4 +31,8 @@
     }
 
+    public IEnumerable<IDecomposer> Decomposers {
+      get { return decomposers; }
+    }
+
     public IFormatter GetFormatter(Type type) {      
       IFormatter formatter;
