Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.Designer.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.Designer.cs	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.Designer.cs	(revision 4390)
@@ -47,13 +47,15 @@
       this.components = new System.ComponentModel.Container();
       this.dataGridView1 = new System.Windows.Forms.DataGridView();
+      this.idDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.descriptionDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+      this.algorithmClassBindingSource = new System.Windows.Forms.BindingSource(this.components);
       this.refreshButton = new System.Windows.Forms.Button();
       this.saveButton = new System.Windows.Forms.Button();
       this.tabControl1 = new System.Windows.Forms.TabControl();
       this.tabPage1 = new System.Windows.Forms.TabPage();
+      this.populateButton = new System.Windows.Forms.Button();
       this.tabPage2 = new System.Windows.Forms.TabPage();
       this.dataGridView2 = new System.Windows.Forms.DataGridView();
-      this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
-      this.descriptionDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
-      this.algorithmClassBindingSource = new System.Windows.Forms.BindingSource(this.components);
       this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
       this.algorithmClassIdDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -66,9 +68,9 @@
       this.algorithmBindingSource = new System.Windows.Forms.BindingSource(this.components);
       ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.algorithmClassBindingSource)).BeginInit();
       this.tabControl1.SuspendLayout();
       this.tabPage1.SuspendLayout();
       this.tabPage2.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.algorithmClassBindingSource)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.algorithmBindingSource)).BeginInit();
       this.SuspendLayout();
@@ -83,4 +85,5 @@
       this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
       this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.idDataGridViewTextBoxColumn1,
             this.nameDataGridViewTextBoxColumn,
             this.descriptionDataGridViewTextBoxColumn});
@@ -90,5 +93,34 @@
       this.dataGridView1.Size = new System.Drawing.Size(707, 368);
       this.dataGridView1.TabIndex = 0;
-      this.dataGridView1.ColumnHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_ColumnHeaderMouseClick);
+      this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
+      this.dataGridView1.UserAddedRow += new System.Windows.Forms.DataGridViewRowEventHandler(this.dataGridView1_UserAddedRow);
+      this.dataGridView1.UserDeletedRow += new System.Windows.Forms.DataGridViewRowEventHandler(this.dataGridView1_UserDeletedRow);
+      // 
+      // idDataGridViewTextBoxColumn1
+      // 
+      this.idDataGridViewTextBoxColumn1.DataPropertyName = "Id";
+      this.idDataGridViewTextBoxColumn1.HeaderText = "Id";
+      this.idDataGridViewTextBoxColumn1.Name = "idDataGridViewTextBoxColumn1";
+      this.idDataGridViewTextBoxColumn1.ReadOnly = true;
+      this.idDataGridViewTextBoxColumn1.Width = 41;
+      // 
+      // nameDataGridViewTextBoxColumn
+      // 
+      this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name";
+      this.nameDataGridViewTextBoxColumn.HeaderText = "Name";
+      this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn";
+      this.nameDataGridViewTextBoxColumn.Width = 60;
+      // 
+      // descriptionDataGridViewTextBoxColumn
+      // 
+      this.descriptionDataGridViewTextBoxColumn.DataPropertyName = "Description";
+      this.descriptionDataGridViewTextBoxColumn.HeaderText = "Description";
+      this.descriptionDataGridViewTextBoxColumn.Name = "descriptionDataGridViewTextBoxColumn";
+      this.descriptionDataGridViewTextBoxColumn.Width = 85;
+      // 
+      // algorithmClassBindingSource
+      // 
+      this.algorithmClassBindingSource.DataSource = typeof(HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass);
+      this.algorithmClassBindingSource.Sort = "";
       // 
       // refreshButton
@@ -129,4 +161,5 @@
       this.tabPage1.Controls.Add(this.dataGridView1);
       this.tabPage1.Controls.Add(this.refreshButton);
+      this.tabPage1.Controls.Add(this.populateButton);
       this.tabPage1.Controls.Add(this.saveButton);
       this.tabPage1.Location = new System.Drawing.Point(4, 22);
@@ -137,4 +170,15 @@
       this.tabPage1.Text = "tabPage1";
       this.tabPage1.UseVisualStyleBackColor = true;
+      // 
+      // populateButton
+      // 
+      this.populateButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.populateButton.Location = new System.Drawing.Point(168, 380);
+      this.populateButton.Name = "populateButton";
+      this.populateButton.Size = new System.Drawing.Size(75, 23);
+      this.populateButton.TabIndex = 1;
+      this.populateButton.Text = "&Populate";
+      this.populateButton.UseVisualStyleBackColor = true;
+      this.populateButton.Click += new System.EventHandler(this.populateButton_Click);
       // 
       // tabPage2
@@ -168,23 +212,4 @@
       this.dataGridView2.TabIndex = 0;
       // 
-      // nameDataGridViewTextBoxColumn
-      // 
-      this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name";
-      this.nameDataGridViewTextBoxColumn.HeaderText = "Name";
-      this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn";
-      this.nameDataGridViewTextBoxColumn.Width = 60;
-      // 
-      // descriptionDataGridViewTextBoxColumn
-      // 
-      this.descriptionDataGridViewTextBoxColumn.DataPropertyName = "Description";
-      this.descriptionDataGridViewTextBoxColumn.HeaderText = "Description";
-      this.descriptionDataGridViewTextBoxColumn.Name = "descriptionDataGridViewTextBoxColumn";
-      this.descriptionDataGridViewTextBoxColumn.Width = 85;
-      // 
-      // algorithmClassBindingSource
-      // 
-      this.algorithmClassBindingSource.DataSource = typeof(HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass);
-      this.algorithmClassBindingSource.Sort = "";
-      // 
       // idDataGridViewTextBoxColumn
       // 
@@ -247,9 +272,9 @@
       this.Size = new System.Drawing.Size(727, 435);
       ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.algorithmClassBindingSource)).EndInit();
       this.tabControl1.ResumeLayout(false);
       this.tabPage1.ResumeLayout(false);
       this.tabPage2.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.algorithmClassBindingSource)).EndInit();
       ((System.ComponentModel.ISupportInitialize)(this.algorithmBindingSource)).EndInit();
       this.ResumeLayout(false);
@@ -262,6 +287,4 @@
     private System.Windows.Forms.Button refreshButton;
     private System.Windows.Forms.Button saveButton;
-    private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn;
-    private System.Windows.Forms.DataGridViewTextBoxColumn descriptionDataGridViewTextBoxColumn;
     private System.Windows.Forms.BindingSource algorithmClassBindingSource;
     private System.Windows.Forms.TabControl tabControl1;
@@ -278,4 +301,8 @@
     private System.Windows.Forms.DataGridViewTextBoxColumn platformDataGridViewTextBoxColumn;
     private System.Windows.Forms.BindingSource algorithmBindingSource;
+    private System.Windows.Forms.Button populateButton;
+    private System.Windows.Forms.DataGridViewTextBoxColumn idDataGridViewTextBoxColumn1;
+    private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn;
+    private System.Windows.Forms.DataGridViewTextBoxColumn descriptionDataGridViewTextBoxColumn;
 
   }
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.cs	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.cs	(revision 4390)
@@ -26,8 +26,12 @@
 using System.ComponentModel;
 using System.Collections.Generic;
+using System.Data;
+using System;
 
 namespace HeuristicLab.Clients.OKB {
   [View("OKB Administration")]
   public partial class AdministrationView : HeuristicLab.MainForm.WindowsForms.View {
+    List<AlgorithmClass> data;
+
     public AdministrationView() {
       InitializeComponent();
@@ -36,23 +40,34 @@
     private void refreshButton_Click(object sender, System.EventArgs e) {
       IAdminService adminService = ClientFactory.CreateClient<AdminServiceClient, IAdminService>();
-      algorithmClassBindingSource.DataSource = adminService.GetAlgorithmClasses();
+      data = adminService.GetAlgorithmClasses();
+      algorithmClassBindingSource.DataSource = data;
     }
 
     private void saveButton_Click(object sender, System.EventArgs e) {
       IAdminService adminService = ClientFactory.CreateClient<AdminServiceClient, IAdminService>();
-      adminService.UpdateAlgorithmClasses((List<AlgorithmClass>)algorithmClassBindingSource.DataSource);
     }
 
-    private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
-      if (dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == SortOrder.None) {
-        dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = SortOrder.Ascending;
-        dataGridView1.Sort(dataGridView1.Columns[e.ColumnIndex], ListSortDirection.Ascending);
-      } else if (dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == SortOrder.Ascending) {
-        dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = SortOrder.Descending;
-        dataGridView1.Sort(dataGridView1.Columns[e.ColumnIndex], ListSortDirection.Descending);
-      } else {
-        dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = SortOrder.Ascending;
-        dataGridView1.Sort(dataGridView1.Columns[e.ColumnIndex], ListSortDirection.Ascending);
-      }
+    private void populateButton_Click(object sender, System.EventArgs e) {
+      IAdminService adminService = ClientFactory.CreateClient<AdminServiceClient, IAdminService>();
+      for (int i = 0; i < 100; i++)
+        adminService.AddAlgorithmClass(new AlgorithmClass() { Name = Guid.NewGuid().ToString() });
+    }
+
+    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
+      IAdminService adminService = ClientFactory.CreateClient<AdminServiceClient, IAdminService>();
+      adminService.UpdateAlgorithmClass(data[e.RowIndex]);
+    }
+
+    private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e) {
+      IAdminService adminService = ClientFactory.CreateClient<AdminServiceClient, IAdminService>();
+      adminService.AddAlgorithmClass(new AlgorithmClass() {
+        Name = (string)e.Row.Cells["Name"].Value,
+        Description = (string)e.Row.Cells["Description"].Value
+      });
+    }
+
+    private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e) {
+      IAdminService adminService = ClientFactory.CreateClient<AdminServiceClient, IAdminService>();
+      adminService.DeleteAlgorithmClass((long)e.Row.Cells["Id"].Value);
     }
   }
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.resx
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.resx	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/AdministrationView.resx	(revision 4390)
@@ -124,3 +124,6 @@
     <value>228, 17</value>
   </metadata>
+  <metadata name="algorithmBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>228, 17</value>
+  </metadata>
 </root>
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/Reference.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/Reference.cs	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/Reference.cs	(revision 4390)
@@ -5007,4 +5007,7 @@
         void UpdateCompleteProblem(HeuristicLab.Clients.OKB.OKBAdmin.Problem problem);
         
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAdminService/AddAlgorithmClass", ReplyAction="http://tempuri.org/IAdminService/AddAlgorithmClassResponse")]
+        void AddAlgorithmClass(HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass algorithmClass);
+        
         [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAdminService/GetAlgorithmClasses", ReplyAction="http://tempuri.org/IAdminService/GetAlgorithmClassesResponse")]
         System.Collections.Generic.List<HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass> GetAlgorithmClasses();
@@ -5013,6 +5016,6 @@
         void UpdateAlgorithmClass(HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass algorithmClass);
         
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAdminService/UpdateAlgorithmClasses", ReplyAction="http://tempuri.org/IAdminService/UpdateAlgorithmClassesResponse")]
-        void UpdateAlgorithmClasses(System.Collections.Generic.List<HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass> algorithmClasses);
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAdminService/DeleteAlgorithmClass", ReplyAction="http://tempuri.org/IAdminService/DeleteAlgorithmClassResponse")]
+        void DeleteAlgorithmClass(long algorithmClassId);
     }
     
@@ -5064,4 +5067,8 @@
         }
         
+        public void AddAlgorithmClass(HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass algorithmClass) {
+            base.Channel.AddAlgorithmClass(algorithmClass);
+        }
+        
         public System.Collections.Generic.List<HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass> GetAlgorithmClasses() {
             return base.Channel.GetAlgorithmClasses();
@@ -5072,6 +5079,6 @@
         }
         
-        public void UpdateAlgorithmClasses(System.Collections.Generic.List<HeuristicLab.Clients.OKB.OKBAdmin.AlgorithmClass> algorithmClasses) {
-            base.Channel.UpdateAlgorithmClasses(algorithmClasses);
+        public void DeleteAlgorithmClass(long algorithmClassId) {
+            base.Channel.DeleteAlgorithmClass(algorithmClassId);
         }
     }
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/configuration.svcinfo
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/configuration.svcinfo	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/configuration.svcinfo	(revision 4390)
@@ -6,5 +6,5 @@
   </bindings>
   <endpoints>
-    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:8733/OKB-3.3/AdminService&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IAdminService&quot; contract=&quot;OKBAdmin.IAdminService&quot; name=&quot;NetTcpBinding_IAdminService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAAD/AlkYJw/OUhl6D/9w8mjJBh39kgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyMDIyMzIwOFoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPkfCSLRX8/4F+Z4ys43yZ4MMzjB44cMakPz4Nri+mEB5n2z/0GFatCYzkI2f/nniWqVrBYjHkjsZy2EZioHu4wa99c1XEGJnFNDuNn6ESkfEyhyF4+OqKGnpK9HNrw7OWMuqn2oOh0iFd9fl6FTAm+Y0p3LP+38BuYzpCniqqdwIDAQABo0kwRzBFBgNVHQEEPjA8gBDvi8Rgio9v+mr58TiAvqF5oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQADgYEANdGlvHKeUptfNu9I0wgA5qjmVB+JDldOAkrfM0R+4IcVQ06y5K7P07uxQAV7+rhnDLgLyFJunUHgzbfjsjFy7vjwtoieXA5j0AYlm4AHR7dHt4HVgkIMYt8XOCqMw5jjFX91xJ89tC7mM9zYR48N9T5QSeMGo+f+JzybeLWxnNs=&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:8733/OKB-3.3/AdminService&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IAdminService&quot; contract=&quot;OKBAdmin.IAdminService&quot; name=&quot;NetTcpBinding_IAdminService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAAD/AlkYJw/OUhl6D/9w8mjJBh39kgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyMDIyMzIwOFoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPkfCSLRX8/4F+Z4ys43yZ4MMzjB44cMakPz4Nri+mEB5n2z/0GFatCYzkI2f/nniWqVrBYjHkjsZy2EZioHu4wa99c1XEGJnFNDuNn6ESkfEyhyF4+OqKGnpK9HNrw7OWMuqn2oOh0iFd9fl6FTAm+Y0p3LP+38BuYzpCniqqdwIDAQABo0kwRzBFBgNVHQEEPjA8gBDvi8Rgio9v+mr58TiAvqF5oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQADgYEANdGlvHKeUptfNu9I0wgA5qjmVB+JDldOAkrfM0R+4IcVQ06y5K7P07uxQAV7+rhnDLgLyFJunUHgzbfjsjFy7vjwtoieXA5j0AYlm4AHR7dHt4HVgkIMYt8XOCqMw5jjFX91xJ89tC7mM9zYR48N9T5QSeMGo+f+JzybeLWxnNs=&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" contractName="OKBAdmin.IAdminService" name="NetTcpBinding_IAdminService" />
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:8733/OKB-3.3/AdminService&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IAdminService&quot; contract=&quot;OKBAdmin.IAdminService&quot; name=&quot;NetTcpBinding_IAdminService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAA7WQGTXSZ0l8y2nNnlyNbjNfb47QgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyNDExMTYxOVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWKl42prPWlY2brrQdaD1hQ5YMlBx+2KVChVW5A4v+Fwv7RsibhHKiZqpCqcGjz56JyK28FHa2e9q/I0ERUD3wHp0g7MzD/Gyoi1fY+HVRMSmE28ajy/1PCCJuK+Ud0OLewB95kAdZZPAn1roOirWIGfLVgmaoBy/He70CX1WuwQIDAQABo0kwRzBFBgNVHQEEPjA8gBDEuOmitgSucjBZiRzZic+koRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQADgYEAQ0Q9rz9BMq6vgDt1+tDkyVxSaD9TtP04oxkdivNG6VdzLQ4m/QzAhxAvT6FqFmSx4m0KdtfVdviVrxu8vb0JY4dihYiCZ8fxF41MbODtTpKhMepOj+10kF7kzcVagWbSlLMNlsUOzJzlaBoq/cDC47QyF3vt4xuFoTSK3DUgtnk=&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://localhost:8733/OKB-3.3/AdminService&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IAdminService&quot; contract=&quot;OKBAdmin.IAdminService&quot; name=&quot;NetTcpBinding_IAdminService&quot;&gt;&lt;identity&gt;&lt;certificate encodedValue=&quot;AwAAAAEAAAAUAAAA7WQGTXSZ0l8y2nNnlyNbjNfb47QgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyNDExMTYxOVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWKl42prPWlY2brrQdaD1hQ5YMlBx+2KVChVW5A4v+Fwv7RsibhHKiZqpCqcGjz56JyK28FHa2e9q/I0ERUD3wHp0g7MzD/Gyoi1fY+HVRMSmE28ajy/1PCCJuK+Ud0OLewB95kAdZZPAn1roOirWIGfLVgmaoBy/He70CX1WuwQIDAQABo0kwRzBFBgNVHQEEPjA8gBDEuOmitgSucjBZiRzZic+koRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQADgYEAQ0Q9rz9BMq6vgDt1+tDkyVxSaD9TtP04oxkdivNG6VdzLQ4m/QzAhxAvT6FqFmSx4m0KdtfVdviVrxu8vb0JY4dihYiCZ8fxF41MbODtTpKhMepOj+10kF7kzcVagWbSlLMNlsUOzJzlaBoq/cDC47QyF3vt4xuFoTSK3DUgtnk=&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" contractName="OKBAdmin.IAdminService" name="NetTcpBinding_IAdminService" />
   </endpoints>
 </configurationSnapshot>
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/configuration91.svcinfo
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/configuration91.svcinfo	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/configuration91.svcinfo	(revision 4390)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="digIaTjAqc6HskPS0J94jCaee/o=">
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="4Q9UIc8RISg0ikRDnE1RUiHj51c=">
   <bindingConfigurations>
     <bindingConfiguration bindingType="netTcpBinding" name="NetTcpBinding_IAdminService">
@@ -173,5 +173,5 @@
         </property>
         <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-          <serializedValue>AwAAAAEAAAAUAAAAD/AlkYJw/OUhl6D/9w8mjJBh39kgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyMDIyMzIwOFoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPkfCSLRX8/4F+Z4ys43yZ4MMzjB44cMakPz4Nri+mEB5n2z/0GFatCYzkI2f/nniWqVrBYjHkjsZy2EZioHu4wa99c1XEGJnFNDuNn6ESkfEyhyF4+OqKGnpK9HNrw7OWMuqn2oOh0iFd9fl6FTAm+Y0p3LP+38BuYzpCniqqdwIDAQABo0kwRzBFBgNVHQEEPjA8gBDvi8Rgio9v+mr58TiAvqF5oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQADgYEANdGlvHKeUptfNu9I0wgA5qjmVB+JDldOAkrfM0R+4IcVQ06y5K7P07uxQAV7+rhnDLgLyFJunUHgzbfjsjFy7vjwtoieXA5j0AYlm4AHR7dHt4HVgkIMYt8XOCqMw5jjFX91xJ89tC7mM9zYR48N9T5QSeMGo+f+JzybeLWxnNs=</serializedValue>
+          <serializedValue>AwAAAAEAAAAUAAAA7WQGTXSZ0l8y2nNnlyNbjNfb47QgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyNDExMTYxOVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWKl42prPWlY2brrQdaD1hQ5YMlBx+2KVChVW5A4v+Fwv7RsibhHKiZqpCqcGjz56JyK28FHa2e9q/I0ERUD3wHp0g7MzD/Gyoi1fY+HVRMSmE28ajy/1PCCJuK+Ud0OLewB95kAdZZPAn1roOirWIGfLVgmaoBy/He70CX1WuwQIDAQABo0kwRzBFBgNVHQEEPjA8gBDEuOmitgSucjBZiRzZic+koRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQADgYEAQ0Q9rz9BMq6vgDt1+tDkyVxSaD9TtP04oxkdivNG6VdzLQ4m/QzAhxAvT6FqFmSx4m0KdtfVdviVrxu8vb0JY4dihYiCZ8fxF41MbODtTpKhMepOj+10kF7kzcVagWbSlLMNlsUOzJzlaBoq/cDC47QyF3vt4xuFoTSK3DUgtnk=</serializedValue>
         </property>
         <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/service.wsdl
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/service.wsdl	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/service.wsdl	(revision 4390)
@@ -297,4 +297,42 @@
     </wsp:ExactlyOne>
   </wsp:Policy>
+  <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_AddAlgorithmClass_Input_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <sp:Body />
+          <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
+        </sp:SignedParts>
+        <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <sp:Body />
+        </sp:EncryptedParts>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
+  <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_AddAlgorithmClass_output_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <sp:Body />
+          <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
+        </sp:SignedParts>
+        <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <sp:Body />
+        </sp:EncryptedParts>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
   <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_GetAlgorithmClasses_Input_policy">
     <wsp:ExactlyOne>
@@ -373,24 +411,24 @@
     </wsp:ExactlyOne>
   </wsp:Policy>
-  <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_UpdateAlgorithmClasses_Input_policy">
-    <wsp:ExactlyOne>
-      <wsp:All>
-        <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
-          <sp:Body />
-          <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
-          <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
-          <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
-          <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
-          <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
-          <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
-          <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
-        </sp:SignedParts>
-        <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
-          <sp:Body />
-        </sp:EncryptedParts>
-      </wsp:All>
-    </wsp:ExactlyOne>
-  </wsp:Policy>
-  <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_UpdateAlgorithmClasses_output_policy">
+  <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_DeleteAlgorithmClass_Input_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <sp:Body />
+          <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
+          <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
+        </sp:SignedParts>
+        <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <sp:Body />
+        </sp:EncryptedParts>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
+  <wsp:Policy wsu:Id="NetTcpBinding_IAdminService_DeleteAlgorithmClass_output_policy">
     <wsp:ExactlyOne>
       <wsp:All>
@@ -449,4 +487,10 @@
     <wsdl:part name="parameters" element="tns:UpdateCompleteProblemResponse" />
   </wsdl:message>
+  <wsdl:message name="IAdminService_AddAlgorithmClass_InputMessage">
+    <wsdl:part name="parameters" element="tns:AddAlgorithmClass" />
+  </wsdl:message>
+  <wsdl:message name="IAdminService_AddAlgorithmClass_OutputMessage">
+    <wsdl:part name="parameters" element="tns:AddAlgorithmClassResponse" />
+  </wsdl:message>
   <wsdl:message name="IAdminService_GetAlgorithmClasses_InputMessage">
     <wsdl:part name="parameters" element="tns:GetAlgorithmClasses" />
@@ -461,9 +505,9 @@
     <wsdl:part name="parameters" element="tns:UpdateAlgorithmClassResponse" />
   </wsdl:message>
-  <wsdl:message name="IAdminService_UpdateAlgorithmClasses_InputMessage">
-    <wsdl:part name="parameters" element="tns:UpdateAlgorithmClasses" />
-  </wsdl:message>
-  <wsdl:message name="IAdminService_UpdateAlgorithmClasses_OutputMessage">
-    <wsdl:part name="parameters" element="tns:UpdateAlgorithmClassesResponse" />
+  <wsdl:message name="IAdminService_DeleteAlgorithmClass_InputMessage">
+    <wsdl:part name="parameters" element="tns:DeleteAlgorithmClass" />
+  </wsdl:message>
+  <wsdl:message name="IAdminService_DeleteAlgorithmClass_OutputMessage">
+    <wsdl:part name="parameters" element="tns:DeleteAlgorithmClassResponse" />
   </wsdl:message>
   <wsdl:portType name="IAdminService">
@@ -488,4 +532,8 @@
       <wsdl:output wsaw:Action="http://tempuri.org/IAdminService/UpdateCompleteProblemResponse" message="tns:IAdminService_UpdateCompleteProblem_OutputMessage" />
     </wsdl:operation>
+    <wsdl:operation name="AddAlgorithmClass">
+      <wsdl:input wsaw:Action="http://tempuri.org/IAdminService/AddAlgorithmClass" message="tns:IAdminService_AddAlgorithmClass_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IAdminService/AddAlgorithmClassResponse" message="tns:IAdminService_AddAlgorithmClass_OutputMessage" />
+    </wsdl:operation>
     <wsdl:operation name="GetAlgorithmClasses">
       <wsdl:input wsaw:Action="http://tempuri.org/IAdminService/GetAlgorithmClasses" message="tns:IAdminService_GetAlgorithmClasses_InputMessage" />
@@ -496,7 +544,7 @@
       <wsdl:output wsaw:Action="http://tempuri.org/IAdminService/UpdateAlgorithmClassResponse" message="tns:IAdminService_UpdateAlgorithmClass_OutputMessage" />
     </wsdl:operation>
-    <wsdl:operation name="UpdateAlgorithmClasses">
-      <wsdl:input wsaw:Action="http://tempuri.org/IAdminService/UpdateAlgorithmClasses" message="tns:IAdminService_UpdateAlgorithmClasses_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IAdminService/UpdateAlgorithmClassesResponse" message="tns:IAdminService_UpdateAlgorithmClasses_OutputMessage" />
+    <wsdl:operation name="DeleteAlgorithmClass">
+      <wsdl:input wsaw:Action="http://tempuri.org/IAdminService/DeleteAlgorithmClass" message="tns:IAdminService_DeleteAlgorithmClass_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IAdminService/DeleteAlgorithmClassResponse" message="tns:IAdminService_DeleteAlgorithmClass_OutputMessage" />
     </wsdl:operation>
   </wsdl:portType>
@@ -559,4 +607,15 @@
       </wsdl:output>
     </wsdl:operation>
+    <wsdl:operation name="AddAlgorithmClass">
+      <soap12:operation soapAction="http://tempuri.org/IAdminService/AddAlgorithmClass" style="document" />
+      <wsdl:input>
+        <wsp:PolicyReference URI="#NetTcpBinding_IAdminService_AddAlgorithmClass_Input_policy" />
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <wsp:PolicyReference URI="#NetTcpBinding_IAdminService_AddAlgorithmClass_output_policy" />
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
     <wsdl:operation name="GetAlgorithmClasses">
       <soap12:operation soapAction="http://tempuri.org/IAdminService/GetAlgorithmClasses" style="document" />
@@ -581,12 +640,12 @@
       </wsdl:output>
     </wsdl:operation>
-    <wsdl:operation name="UpdateAlgorithmClasses">
-      <soap12:operation soapAction="http://tempuri.org/IAdminService/UpdateAlgorithmClasses" style="document" />
-      <wsdl:input>
-        <wsp:PolicyReference URI="#NetTcpBinding_IAdminService_UpdateAlgorithmClasses_Input_policy" />
-        <soap12:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <wsp:PolicyReference URI="#NetTcpBinding_IAdminService_UpdateAlgorithmClasses_output_policy" />
+    <wsdl:operation name="DeleteAlgorithmClass">
+      <soap12:operation soapAction="http://tempuri.org/IAdminService/DeleteAlgorithmClass" style="document" />
+      <wsdl:input>
+        <wsp:PolicyReference URI="#NetTcpBinding_IAdminService_DeleteAlgorithmClass_Input_policy" />
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <wsp:PolicyReference URI="#NetTcpBinding_IAdminService_DeleteAlgorithmClass_output_policy" />
         <soap12:body use="literal" />
       </wsdl:output>
@@ -601,5 +660,5 @@
           <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
             <X509Data>
-              <X509Certificate>MIIB7jCCAVugAwIBAgIQHRM04rGn9rBGca6mGX2LQjAJBgUrDgMCHQUAMBQxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xMDA4MjAyMjMyMDhaFw0zOTEyMzEyMzU5NTlaMBQxEjAQBgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz5Hwki0V/P+BfmeMrON8meDDM4weOHDGpD8+Da4vphAeZ9s/9BhWrQmM5CNn/554lqlawWIx5I7GcthGYqB7uMGvfXNVxBiZxTQ7jZ+hEpHxMochePjqihp6SvRza8OzljLqp9qDodIhXfX5ehUwJvmNKdyz/t/AbmM6Qp4qqncCAwEAAaNJMEcwRQYDVR0BBD4wPIAQ74vEYIqPb/pq+fE4gL6heaEWMBQxEjAQBgNVBAMTCWxvY2FsaG9zdIIQHRM04rGn9rBGca6mGX2LQjAJBgUrDgMCHQUAA4GBADXRpbxynlKbXzbvSNMIAOao5lQfiQ5XTgJK3zNEfuCHFUNOsuSuz9O7sUAFe/q4Zwy4C8hSbp1B4M2347Ixcu748LaInlwOY9AGJZuAB0e3R7eB1YJCDGLfFzgqjMOY4xV/dcSfPbQu5jPc2EePDfU+UEnjBqPn/ic8m3i1sZzb</X509Certificate>
+              <X509Certificate>MIIB7jCCAVugAwIBAgIQSA/NgVsCBrNLaqTPr3nVJDAJBgUrDgMCHQUAMBQxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xMDA4MjQxMTE2MTlaFw0zOTEyMzEyMzU5NTlaMBQxEjAQBgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1ipeNqaz1pWNm660HWg9YUOWDJQcftilQoVVuQOL/hcL+0bIm4RyomaqQqnBo8+eicitvBR2tnvavyNBEVA98B6dIOzMw/xsqItX2Ph1UTEphNvGo8v9TwgibivlHdDi3sAfeZAHWWTwJ9a6Doq1iBny1YJmqAcvx3u9Al9VrsECAwEAAaNJMEcwRQYDVR0BBD4wPIAQxLjporYErnIwWYkc2YnPpKEWMBQxEjAQBgNVBAMTCWxvY2FsaG9zdIIQSA/NgVsCBrNLaqTPr3nVJDAJBgUrDgMCHQUAA4GBAENEPa8/QTKur4A7dfrQ5MlcUmg/U7T9OKMZHYrzRulXcy0OJv0MwIcQL0+hahZkseJtCnbX1Xb4la8bvL29CWOHYoWIgmfH8ReNTGzg7U6SoTHqTo/tdJBe5M3FWoFm0pSzDZbFDsyc5WgaKv3AwuO0Mhd77eMbhaE0itw1ILZ5</X509Certificate>
             </X509Data>
           </KeyInfo>
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/service.xsd
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/service.xsd	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Service References/OKBAdmin/service.xsd	(revision 4390)
@@ -66,4 +66,16 @@
     </xs:complexType>
   </xs:element>
+  <xs:element name="AddAlgorithmClass">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q6="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataAccess" minOccurs="0" name="algorithmClass" nillable="true" type="q6:AlgorithmClass" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="AddAlgorithmClassResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
   <xs:element name="GetAlgorithmClasses">
     <xs:complexType>
@@ -74,5 +86,5 @@
     <xs:complexType>
       <xs:sequence>
-        <xs:element xmlns:q6="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataAccess" minOccurs="0" name="GetAlgorithmClassesResult" nillable="true" type="q6:ArrayOfAlgorithmClass" />
+        <xs:element xmlns:q7="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataAccess" minOccurs="0" name="GetAlgorithmClassesResult" nillable="true" type="q7:ArrayOfAlgorithmClass" />
       </xs:sequence>
     </xs:complexType>
@@ -81,5 +93,5 @@
     <xs:complexType>
       <xs:sequence>
-        <xs:element xmlns:q7="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataAccess" minOccurs="0" name="algorithmClass" nillable="true" type="q7:AlgorithmClass" />
+        <xs:element xmlns:q8="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataAccess" minOccurs="0" name="algorithmClass" nillable="true" type="q8:AlgorithmClass" />
       </xs:sequence>
     </xs:complexType>
@@ -90,12 +102,12 @@
     </xs:complexType>
   </xs:element>
-  <xs:element name="UpdateAlgorithmClasses">
+  <xs:element name="DeleteAlgorithmClass">
     <xs:complexType>
       <xs:sequence>
-        <xs:element xmlns:q8="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataAccess" minOccurs="0" name="algorithmClasses" nillable="true" type="q8:ArrayOfAlgorithmClass" />
+        <xs:element minOccurs="0" name="algorithmClassId" type="xs:long" />
       </xs:sequence>
     </xs:complexType>
   </xs:element>
-  <xs:element name="UpdateAlgorithmClassesResponse">
+  <xs:element name="DeleteAlgorithmClassResponse">
     <xs:complexType>
       <xs:sequence />
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config	(revision 4389)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config	(revision 4390)
@@ -26,5 +26,5 @@
                 contract="OKBAdmin.IAdminService" name="NetTcpBinding_IAdminService">
                 <identity>
-                    <certificate encodedValue="AwAAAAEAAAAUAAAAD/AlkYJw/OUhl6D/9w8mjJBh39kgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyMDIyMzIwOFoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPkfCSLRX8/4F+Z4ys43yZ4MMzjB44cMakPz4Nri+mEB5n2z/0GFatCYzkI2f/nniWqVrBYjHkjsZy2EZioHu4wa99c1XEGJnFNDuNn6ESkfEyhyF4+OqKGnpK9HNrw7OWMuqn2oOh0iFd9fl6FTAm+Y0p3LP+38BuYzpCniqqdwIDAQABo0kwRzBFBgNVHQEEPjA8gBDvi8Rgio9v+mr58TiAvqF5oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQADgYEANdGlvHKeUptfNu9I0wgA5qjmVB+JDldOAkrfM0R+4IcVQ06y5K7P07uxQAV7+rhnDLgLyFJunUHgzbfjsjFy7vjwtoieXA5j0AYlm4AHR7dHt4HVgkIMYt8XOCqMw5jjFX91xJ89tC7mM9zYR48N9T5QSeMGo+f+JzybeLWxnNs=" />
+                    <certificate encodedValue="AwAAAAEAAAAUAAAA7WQGTXSZ0l8y2nNnlyNbjNfb47QgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyNDExMTYxOVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWKl42prPWlY2brrQdaD1hQ5YMlBx+2KVChVW5A4v+Fwv7RsibhHKiZqpCqcGjz56JyK28FHa2e9q/I0ERUD3wHp0g7MzD/Gyoi1fY+HVRMSmE28ajy/1PCCJuK+Ud0OLewB95kAdZZPAn1roOirWIGfLVgmaoBy/He70CX1WuwQIDAQABo0kwRzBFBgNVHQEEPjA8gBDEuOmitgSucjBZiRzZic+koRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghBID82BWwIGs0tqpM+vedUkMAkGBSsOAwIdBQADgYEAQ0Q9rz9BMq6vgDt1+tDkyVxSaD9TtP04oxkdivNG6VdzLQ4m/QzAhxAvT6FqFmSx4m0KdtfVdviVrxu8vb0JY4dihYiCZ8fxF41MbODtTpKhMepOj+10kF7kzcVagWbSlLMNlsUOzJzlaBoq/cDC47QyF3vt4xuFoTSK3DUgtnk=" />
                 </identity>
             </endpoint>
Index: /trunk/sources/HeuristicLab.Services.OKB/3.3/AdminService.cs
===================================================================
--- /trunk/sources/HeuristicLab.Services.OKB/3.3/AdminService.cs	(revision 4389)
+++ /trunk/sources/HeuristicLab.Services.OKB/3.3/AdminService.cs	(revision 4390)
@@ -209,4 +209,11 @@
 
 
+    public void AddAlgorithmClass(AlgorithmClass algorithmClass) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        okb.AlgorithmClasses.InsertOnSubmit(new AlgorithmClass() { Name = algorithmClass.Name, Description = algorithmClass.Description });
+        okb.SubmitChanges();
+      }
+    }
+
     public AlgorithmClass[] GetAlgorithmClasses() {
       using (OKBDataContext okb = new OKBDataContext()) {
@@ -217,20 +224,14 @@
     public void UpdateAlgorithmClass(AlgorithmClass algorithmClass) {
       using (OKBDataContext okb = new OKBDataContext()) {
-        okb.AlgorithmClasses.Attach(algorithmClass);
-        okb.SubmitChanges();
-      }
-    }
-
-    public void UpdateAlgorithmClasses(AlgorithmClass[] algorithmClasses) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        foreach (AlgorithmClass a in algorithmClasses) {
-          AlgorithmClass original = okb.AlgorithmClasses.FirstOrDefault(x => x.Id == a.Id);
-          if (original != null) {
-            original.Name = a.Name;
-            original.Description = a.Description;
-          } else {
-            okb.AlgorithmClasses.InsertOnSubmit(a);
-          }
-        }
+        AlgorithmClass original = okb.AlgorithmClasses.First(a => a.Id == algorithmClass.Id);
+        original.Name = algorithmClass.Name;
+        original.Description = algorithmClass.Description;
+        okb.SubmitChanges();
+      }
+    }
+
+    public void DeleteAlgorithmClass(long algorithmClassId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        okb.AlgorithmClasses.DeleteOnSubmit(okb.AlgorithmClasses.First(a => a.Id == algorithmClassId));
         okb.SubmitChanges();
       }
Index: /trunk/sources/HeuristicLab.Services.OKB/3.3/Interfaces/IAdminService.cs
===================================================================
--- /trunk/sources/HeuristicLab.Services.OKB/3.3/Interfaces/IAdminService.cs	(revision 4389)
+++ /trunk/sources/HeuristicLab.Services.OKB/3.3/Interfaces/IAdminService.cs	(revision 4390)
@@ -112,4 +112,7 @@
 
     [OperationContract]
+    void AddAlgorithmClass(AlgorithmClass algorithmClass);
+
+    [OperationContract]
     AlgorithmClass[] GetAlgorithmClasses();
 
@@ -118,6 +121,5 @@
 
     [OperationContract]
-    void UpdateAlgorithmClasses(AlgorithmClass[] algorithmClasses);
-
+    void DeleteAlgorithmClass(long algorithmClassId);
 
   }
