Index: trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.Designer.cs	(revision 1566)
+++ trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.Designer.cs	(revision 1611)
@@ -24,28 +24,62 @@
     /// </summary>
     private void InitializeComponent() {
-      System.Windows.Forms.Button updateButton;
+      this.updateButton = new System.Windows.Forms.Button();
       this.configurationTabs = new System.Windows.Forms.TabControl();
-      updateButton = new System.Windows.Forms.Button();
+      this.buttonPanel = new System.Windows.Forms.TableLayoutPanel();
+      this.resetButton = new System.Windows.Forms.Button();
+      this.buttonPanel.SuspendLayout();
       this.SuspendLayout();
       // 
       // updateButton
       // 
-      updateButton.Dock = System.Windows.Forms.DockStyle.Bottom;
-      updateButton.Location = new System.Drawing.Point(0, 555);
-      updateButton.Name = "updateButton";
-      updateButton.Size = new System.Drawing.Size(597, 25);
-      updateButton.TabIndex = 1;
-      updateButton.Text = "Define Configuration";
-      updateButton.UseVisualStyleBackColor = true;
-      updateButton.Click += new System.EventHandler(this.updateButton_Click);
+      this.updateButton.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.updateButton.Location = new System.Drawing.Point(296, 6);
+      this.updateButton.Name = "updateButton";
+      this.updateButton.Size = new System.Drawing.Size(282, 25);
+      this.updateButton.TabIndex = 1;
+      this.updateButton.Text = "&Define";
+      this.updateButton.UseVisualStyleBackColor = true;
+      this.updateButton.Click += new System.EventHandler(this.updateButton_Click);
       // 
       // configurationTabs
       // 
-      this.configurationTabs.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.configurationTabs.Location = new System.Drawing.Point(0, 0);
+      this.configurationTabs.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.configurationTabs.Location = new System.Drawing.Point(0, -1);
       this.configurationTabs.Name = "configurationTabs";
       this.configurationTabs.SelectedIndex = 0;
-      this.configurationTabs.Size = new System.Drawing.Size(597, 580);
+      this.configurationTabs.Size = new System.Drawing.Size(584, 573);
       this.configurationTabs.TabIndex = 0;
+      // 
+      // buttonPanel
+      // 
+      this.buttonPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.buttonPanel.AutoSize = true;
+      this.buttonPanel.CausesValidation = false;
+      this.buttonPanel.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.InsetDouble;
+      this.buttonPanel.ColumnCount = 2;
+      this.buttonPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.buttonPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.buttonPanel.Controls.Add(this.updateButton, 1, 0);
+      this.buttonPanel.Controls.Add(this.resetButton, 0, 0);
+      this.buttonPanel.Location = new System.Drawing.Point(0, 572);
+      this.buttonPanel.Name = "buttonPanel";
+      this.buttonPanel.RowCount = 1;
+      this.buttonPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.buttonPanel.Size = new System.Drawing.Size(584, 37);
+      this.buttonPanel.TabIndex = 2;
+      // 
+      // resetButton
+      // 
+      this.resetButton.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.resetButton.Location = new System.Drawing.Point(6, 6);
+      this.resetButton.Name = "resetButton";
+      this.resetButton.Size = new System.Drawing.Size(281, 25);
+      this.resetButton.TabIndex = 2;
+      this.resetButton.Text = "&Reset All";
+      this.resetButton.UseVisualStyleBackColor = true;
+      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
       // 
       // PersistenceConfigurationForm
@@ -53,10 +87,12 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(597, 580);
-      this.Controls.Add(updateButton);
+      this.ClientSize = new System.Drawing.Size(582, 609);
+      this.Controls.Add(this.buttonPanel);
       this.Controls.Add(this.configurationTabs);
       this.Name = "PersistenceConfigurationForm";
-      this.Text = "PersistenceConfigurationForm";      
+      this.Text = "PersistenceConfigurationForm";
+      this.buttonPanel.ResumeLayout(false);
       this.ResumeLayout(false);
+      this.PerformLayout();
 
     }
@@ -65,4 +101,7 @@
 
     private System.Windows.Forms.TabControl configurationTabs;
+    private System.Windows.Forms.TableLayoutPanel buttonPanel;
+    private System.Windows.Forms.Button resetButton;
+    private System.Windows.Forms.Button updateButton;
   }
 }
Index: trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs	(revision 1566)
+++ trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.cs	(revision 1611)
@@ -20,4 +20,5 @@
     private readonly Dictionary<string, Type> typeNameTable;
     private readonly Dictionary<Type, string> reverseTypeNameTable;
+    private bool underConstruction;
 
     public PersistenceConfigurationForm() {
@@ -28,7 +29,27 @@
       typeNameTable = new Dictionary<string, Type>();
       reverseTypeNameTable = new Dictionary<Type, string>();
+      underConstruction = true;
+      InitializeTooltips();
       InitializeNameTables();
       initializeConfigPages();
       UpdateFromConfigurationService();
+      underConstruction = false;
+      UpdatePreview();
+    }
+
+    private void InitializeTooltips() {
+      ToolTip tooltip = new ToolTip() {
+        AutoPopDelay = 5000,
+        InitialDelay = 1000,
+        ReshowDelay = 500,
+        ShowAlways = true
+      };
+      tooltip.SetToolTip(resetButton,
+        "Clear all custom configurations from memory.\r\n" +
+        "The saved configuration will still be used next\r\n" +
+        "time if you don't save (define) this change.");
+      tooltip.SetToolTip(updateButton,
+        "Define configuration for currently active format\r\n" +
+        "and save to disk.");
     }
 
@@ -112,5 +133,4 @@
           Name = "CheckBox",
           Dock = DockStyle.Fill,
-          Enabled = false,
         };
         horizontalSplit.Panel2.Controls.Add(checkBox);
@@ -246,4 +266,21 @@
     }
 
+    private void UpdatePreview() {
+      if (underConstruction)
+        return;
+      ListBox checkBox = (ListBox)GetActiveControl("CheckBox");
+      IFormat activeFormat = (IFormat)configurationTabs.SelectedTab.Tag;
+      if (activeFormat != null && checkBox != null) {
+        checkBox.Items.Clear();
+        Configuration activeConfig = GetActiveConfiguration();
+        foreach (var formatter in activeConfig.Formatters) {
+          checkBox.Items.Add(formatter.GetType().Name + " (F)");
+        }
+        foreach (var decomposer in activeConfig.Decomposers)
+          checkBox.Items.Add(decomposer.GetType().Name + " (D)");
+      }
+    }
+
+
     void gridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
       UpdatePreview();
@@ -292,17 +329,4 @@
     }
 
-    private void UpdatePreview() {
-      ListBox checkBox = (ListBox)GetActiveControl("CheckBox");
-      IFormat activeFormat = (IFormat)configurationTabs.SelectedTab.Tag;
-      if (activeFormat != null && checkBox != null) {
-        checkBox.Items.Clear();
-        Configuration activeConfig = GetActiveConfiguration();
-        foreach (var formatter in activeConfig.Formatters) {
-          checkBox.Items.Add(formatter.GetType().Name + " (F)");
-        }
-        foreach (var decomposer in activeConfig.Decomposers)
-          checkBox.Items.Add(decomposer.GetType().Name + " (D)");
-      }
-    }
 
     private void decomposerList_ItemChecked(object sender, ItemCheckedEventArgs e) {
@@ -370,4 +394,12 @@
     }
 
+    private void resetButton_Click(object sender, EventArgs e) {
+      ConfigurationService.Instance.Reset();
+      underConstruction = true;
+      UpdateFromConfigurationService();
+      underConstruction = false;
+      UpdatePreview();
+    }
+
   }
 
Index: trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.resx
===================================================================
--- trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.resx	(revision 1566)
+++ trunk/sources/HeuristicLab.Persistence.GUI/3.3/PersistenceConfigurationForm.resx	(revision 1611)
@@ -118,6 +118,3 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="updateButton.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>False</value>
-  </metadata>
 </root>
