Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 7573)
@@ -206,4 +206,6 @@
     <Compile Include="Query\QueryMenuItem.cs" />
     <Compile Include="Query\ServiceClient\CombinedFilter.cs" />
+    <Compile Include="Query\ServiceClient\OrdinalComparisonPercentFilter.cs" />
+    <Compile Include="Query\ServiceClient\NameOrdinalComparisonPercentFilter.cs" />
     <Compile Include="Query\ServiceClient\OrdinalComparisonFloatFilter.cs" />
     <Compile Include="Query\ServiceClient\OrdinalComparisonDoubleFilter.cs" />
@@ -231,4 +233,10 @@
       <DependentUpon>CombinedFilterView.cs</DependentUpon>
     </Compile>
+    <Compile Include="Query\Views\OrdinalComparisonPercentFilterView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Query\Views\OrdinalComparisonPercentFilterView.Designer.cs">
+      <DependentUpon>OrdinalComparisonPercentFilterView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Query\Views\OrdinalComparisonDateTimeFilterView.cs">
       <SubType>UserControl</SubType>
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/NameOrdinalComparisonPercentFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/NameOrdinalComparisonPercentFilter.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/NameOrdinalComparisonPercentFilter.cs	(revision 7573)
@@ -0,0 +1,28 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Clients.OKB.Query {
+  public partial class NameOrdinalComparisonPercentFilter {
+    public override Filter Clone() {
+      return new NameOrdinalComparisonPercentFilter() { FilterTypeName = FilterTypeName, Label = Label, Name = Name, Comparison = Comparison, Value = Value };
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/OrdinalComparisonPercentFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/OrdinalComparisonPercentFilter.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/OrdinalComparisonPercentFilter.cs	(revision 7573)
@@ -0,0 +1,28 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Clients.OKB.Query {
+  public partial class OrdinalComparisonPercentFilter {
+    public override Filter Clone() {
+      return new OrdinalComparisonPercentFilter() { FilterTypeName = FilterTypeName, Label = Label, Comparison = Comparison, Value = Value };
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/QueryServiceClient.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/QueryServiceClient.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/ServiceClient/QueryServiceClient.cs	(revision 7573)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.239
+//     Runtime Version:4.0.30319.261
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -18,19 +18,21 @@
     [System.Runtime.Serialization.DataContractAttribute(Name="Filter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
         "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.CombinedFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonLongFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonLongFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonIntFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonIntFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonFloatFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonFloatFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDoubleFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonDoubleFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonPercentFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonPercentFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDateTimeFilter))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.StringComparisonFilter))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.StringComparisonAvailableValuesFilter))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameStringComparisonAvailableValuesFilter))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameStringComparisonFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.CombinedFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonLongFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonLongFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDoubleFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonDoubleFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDateTimeFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonIntFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonIntFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonFloatFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonFloatFilter))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.EqualityComparisonFilter))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.EqualityComparisonBoolFilter))]
@@ -107,4 +109,390 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="CombinedFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class CombinedFilter : HeuristicLab.Clients.OKB.Query.Filter
+    {
+        
+        private System.Collections.Generic.List<HeuristicLab.Clients.OKB.Query.Filter> FiltersField;
+        
+        private HeuristicLab.Clients.OKB.Query.BooleanOperation OperationField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Query.Filter> Filters
+        {
+            get
+            {
+                return this.FiltersField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.FiltersField, value) != true))
+                {
+                    this.FiltersField = value;
+                    this.RaisePropertyChanged("Filters");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.Query.BooleanOperation Operation
+        {
+            get
+            {
+                return this.OperationField;
+            }
+            set
+            {
+                if ((this.OperationField.Equals(value) != true))
+                {
+                    this.OperationField = value;
+                    this.RaisePropertyChanged("Operation");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonLongFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonLongFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonIntFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonIntFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonFloatFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonFloatFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDoubleFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonDoubleFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonPercentFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonPercentFilter))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDateTimeFilter))]
+    public partial class OrdinalComparisonFilter : HeuristicLab.Clients.OKB.Query.Filter
+    {
+        
+        private HeuristicLab.Clients.OKB.Query.OrdinalComparison ComparisonField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.Query.OrdinalComparison Comparison
+        {
+            get
+            {
+                return this.ComparisonField;
+            }
+            set
+            {
+                if ((this.ComparisonField.Equals(value) != true))
+                {
+                    this.ComparisonField = value;
+                    this.RaisePropertyChanged("Comparison");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonLongFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonLongFilter))]
+    public partial class OrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
+    {
+        
+        private long ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public long Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonLongFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class NameOrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonLongFilter
+    {
+        
+        private string NameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonIntFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonIntFilter))]
+    public partial class OrdinalComparisonIntFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
+    {
+        
+        private int ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonIntFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class NameOrdinalComparisonIntFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonIntFilter
+    {
+        
+        private string NameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonFloatFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonFloatFilter))]
+    public partial class OrdinalComparisonFloatFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
+    {
+        
+        private float ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public float Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonFloatFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class NameOrdinalComparisonFloatFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFloatFilter
+    {
+        
+        private string NameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonDoubleFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonDoubleFilter))]
+    public partial class OrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
+    {
+        
+        private double ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonDoubleFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class NameOrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonDoubleFilter
+    {
+        
+        private string NameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonPercentFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonPercentFilter))]
+    public partial class OrdinalComparisonPercentFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
+    {
+        
+        private double ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonPercentFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class NameOrdinalComparisonPercentFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonPercentFilter
+    {
+        
+        private string NameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonDateTimeFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class OrdinalComparisonDateTimeFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
+    {
+        
+        private System.DateTime ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="StringComparisonFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
         "fer")]
@@ -214,333 +602,4 @@
         "fer")]
     public partial class NameStringComparisonFilter : HeuristicLab.Clients.OKB.Query.StringComparisonFilter
-    {
-        
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.NameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.NameField, value) != true))
-                {
-                    this.NameField = value;
-                    this.RaisePropertyChanged("Name");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="CombinedFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class CombinedFilter : HeuristicLab.Clients.OKB.Query.Filter
-    {
-        
-        private System.Collections.Generic.List<HeuristicLab.Clients.OKB.Query.Filter> FiltersField;
-        
-        private HeuristicLab.Clients.OKB.Query.BooleanOperation OperationField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Query.Filter> Filters
-        {
-            get
-            {
-                return this.FiltersField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.FiltersField, value) != true))
-                {
-                    this.FiltersField = value;
-                    this.RaisePropertyChanged("Filters");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public HeuristicLab.Clients.OKB.Query.BooleanOperation Operation
-        {
-            get
-            {
-                return this.OperationField;
-            }
-            set
-            {
-                if ((this.OperationField.Equals(value) != true))
-                {
-                    this.OperationField = value;
-                    this.RaisePropertyChanged("Operation");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonLongFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonLongFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDoubleFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonDoubleFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonDateTimeFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonIntFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonIntFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.OrdinalComparisonFloatFilter))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonFloatFilter))]
-    public partial class OrdinalComparisonFilter : HeuristicLab.Clients.OKB.Query.Filter
-    {
-        
-        private HeuristicLab.Clients.OKB.Query.OrdinalComparison ComparisonField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public HeuristicLab.Clients.OKB.Query.OrdinalComparison Comparison
-        {
-            get
-            {
-                return this.ComparisonField;
-            }
-            set
-            {
-                if ((this.ComparisonField.Equals(value) != true))
-                {
-                    this.ComparisonField = value;
-                    this.RaisePropertyChanged("Comparison");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonLongFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonLongFilter))]
-    public partial class OrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
-    {
-        
-        private long ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public long Value
-        {
-            get
-            {
-                return this.ValueField;
-            }
-            set
-            {
-                if ((this.ValueField.Equals(value) != true))
-                {
-                    this.ValueField = value;
-                    this.RaisePropertyChanged("Value");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonLongFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class NameOrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonLongFilter
-    {
-        
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.NameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.NameField, value) != true))
-                {
-                    this.NameField = value;
-                    this.RaisePropertyChanged("Name");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonDoubleFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonDoubleFilter))]
-    public partial class OrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
-    {
-        
-        private double ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public double Value
-        {
-            get
-            {
-                return this.ValueField;
-            }
-            set
-            {
-                if ((this.ValueField.Equals(value) != true))
-                {
-                    this.ValueField = value;
-                    this.RaisePropertyChanged("Value");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonDoubleFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class NameOrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonDoubleFilter
-    {
-        
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.NameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.NameField, value) != true))
-                {
-                    this.NameField = value;
-                    this.RaisePropertyChanged("Name");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonDateTimeFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class OrdinalComparisonDateTimeFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
-    {
-        
-        private System.DateTime ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime Value
-        {
-            get
-            {
-                return this.ValueField;
-            }
-            set
-            {
-                if ((this.ValueField.Equals(value) != true))
-                {
-                    this.ValueField = value;
-                    this.RaisePropertyChanged("Value");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonIntFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonIntFilter))]
-    public partial class OrdinalComparisonIntFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
-    {
-        
-        private int ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public int Value
-        {
-            get
-            {
-                return this.ValueField;
-            }
-            set
-            {
-                if ((this.ValueField.Equals(value) != true))
-                {
-                    this.ValueField = value;
-                    this.RaisePropertyChanged("Value");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonIntFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class NameOrdinalComparisonIntFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonIntFilter
-    {
-        
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.NameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.NameField, value) != true))
-                {
-                    this.NameField = value;
-                    this.RaisePropertyChanged("Name");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparisonFloatFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.NameOrdinalComparisonFloatFilter))]
-    public partial class OrdinalComparisonFloatFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFilter
-    {
-        
-        private float ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public float Value
-        {
-            get
-            {
-                return this.ValueField;
-            }
-            set
-            {
-                if ((this.ValueField.Equals(value) != true))
-                {
-                    this.ValueField = value;
-                    this.RaisePropertyChanged("Value");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="NameOrdinalComparisonFloatFilter", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class NameOrdinalComparisonFloatFilter : HeuristicLab.Clients.OKB.Query.OrdinalComparisonFloatFilter
     {
         
@@ -707,4 +766,42 @@
     
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="BooleanOperation", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public enum BooleanOperation : int
+    {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        And = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Or = 1,
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparison", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public enum OrdinalComparison : int
+    {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Less = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        LessOrEqual = 1,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Equal = 2,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        GreaterOrEqual = 3,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Greater = 4,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        NotEqual = 5,
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="StringComparison", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
         "fer")]
@@ -732,42 +829,4 @@
     
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="BooleanOperation", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public enum BooleanOperation : int
-    {
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        And = 0,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Or = 1,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OrdinalComparison", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public enum OrdinalComparison : int
-    {
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Less = 0,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        LessOrEqual = 1,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Equal = 2,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        GreaterOrEqual = 3,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Greater = 4,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        NotEqual = 5,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="EqualityComparison", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
         "fer")]
@@ -1227,11 +1286,12 @@
     [System.Runtime.Serialization.DataContractAttribute(Name="Value", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
         "fer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.StringValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.PercentValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.BinaryValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.DoubleValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.BoolValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.IntValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.LongValue))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.FloatValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.StringValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.BoolValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.BinaryValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.LongValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.IntValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Query.DoubleValue))]
     public partial class Value : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
     {
@@ -1374,13 +1434,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="FloatValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class FloatValue : HeuristicLab.Clients.OKB.Query.Value
-    {
-        
-        private float ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public float Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="StringValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class StringValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private string ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Value
         {
             get
@@ -1390,5 +1450,5 @@
             set
             {
-                if ((this.ValueField.Equals(value) != true))
+                if ((object.ReferenceEquals(this.ValueField, value) != true))
                 {
                     this.ValueField = value;
@@ -1401,13 +1461,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="StringValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class StringValue : HeuristicLab.Clients.OKB.Query.Value
-    {
-        
-        private string ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="PercentValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class PercentValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private double ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Value
         {
             get
@@ -1417,5 +1477,5 @@
             set
             {
-                if ((object.ReferenceEquals(this.ValueField, value) != true))
+                if ((this.ValueField.Equals(value) != true))
                 {
                     this.ValueField = value;
@@ -1428,13 +1488,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="BoolValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class BoolValue : HeuristicLab.Clients.OKB.Query.Value
-    {
-        
-        private bool ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public bool Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="BinaryValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class BinaryValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private byte[] ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public byte[] Value
         {
             get
@@ -1444,5 +1504,5 @@
             set
             {
-                if ((this.ValueField.Equals(value) != true))
+                if ((object.ReferenceEquals(this.ValueField, value) != true))
                 {
                     this.ValueField = value;
@@ -1455,13 +1515,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="BinaryValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class BinaryValue : HeuristicLab.Clients.OKB.Query.Value
-    {
-        
-        private byte[] ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public byte[] Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="DoubleValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class DoubleValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private double ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Value
         {
             get
@@ -1471,5 +1531,5 @@
             set
             {
-                if ((object.ReferenceEquals(this.ValueField, value) != true))
+                if ((this.ValueField.Equals(value) != true))
                 {
                     this.ValueField = value;
@@ -1482,13 +1542,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="LongValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class LongValue : HeuristicLab.Clients.OKB.Query.Value
-    {
-        
-        private long ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public long Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="BoolValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class BoolValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private bool ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool Value
         {
             get
@@ -1536,13 +1596,40 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="DoubleValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
-        "fer")]
-    public partial class DoubleValue : HeuristicLab.Clients.OKB.Query.Value
-    {
-        
-        private double ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public double Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="LongValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class LongValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private long ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public long Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="FloatValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.Query.DataTrans" +
+        "fer")]
+    public partial class FloatValue : HeuristicLab.Clients.OKB.Query.Value
+    {
+        
+        private float ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public float Value
         {
             get
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonPercentFilterView.Designer.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonPercentFilterView.Designer.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonPercentFilterView.Designer.cs	(revision 7573)
@@ -0,0 +1,121 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Clients.OKB.Query {
+  partial class OrdinalComparisonPercentFilterView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.valueTextBox = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // label
+      // 
+      this.label.BackColor = System.Drawing.SystemColors.Control;
+      // 
+      // splitContainer1
+      // 
+      // 
+      // splitContainer2
+      // 
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.valueTextBox);
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(3, 2);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(280, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.Text = "%";
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // OrdinalComparisonPercentFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "OrdinalComparisonPercentFilterView";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+
+
+
+
+
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonPercentFilterView.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonPercentFilterView.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/OrdinalComparisonPercentFilterView.cs	(revision 7573)
@@ -0,0 +1,88 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.OKB.Query {
+  [View("OrdinalComparisonPercentFilterView View")]
+  [Content(typeof(OrdinalComparisonPercentFilter), true)]
+  public partial class OrdinalComparisonPercentFilterView : OrdinalComparisonFilterView {
+    public new OrdinalComparisonPercentFilter Content {
+      get { return (OrdinalComparisonPercentFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public OrdinalComparisonPercentFilterView() {
+      InitializeComponent();
+      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(valueTextBox, 2);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+
+      if (Content == null) {
+        valueTextBox.Text = "%";
+      } else if (Content.Value == 0.0) {
+        valueTextBox.Text = "0 %";
+      } else {
+        valueTextBox.Text = Content.Value.ToString();
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      valueTextBox.Enabled = Content != null;
+      valueTextBox.ReadOnly = ReadOnly;
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        label.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.Value.ToString();
+        label.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
+      HeuristicLab.Data.IStringConvertibleValue p = new HeuristicLab.Data.PercentValue();
+
+      string errorMessage;
+      if (!p.Validate(valueTextBox.Text, out errorMessage)) {
+        e.Cancel = true;
+        errorProvider.SetError(valueTextBox, "Invalid Percent Value");
+        valueTextBox.SelectAll();
+      }
+    }
+    private void valueTextBox_Validated(object sender, System.EventArgs e) {
+      if (Content != null) {
+        HeuristicLab.Data.IStringConvertibleValue p = new HeuristicLab.Data.PercentValue();
+
+        p.SetValue(valueTextBox.Text);
+        Content.Value = ((HeuristicLab.Data.PercentValue)p).Value;
+        errorProvider.SetError(valueTextBox, string.Empty);
+        valueTextBox.Text = p.GetValue();
+      }
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs	(revision 7573)
@@ -208,4 +208,6 @@
       } else if (value is FloatValue) {
         return new Data.DoubleValue(((FloatValue)value).Value);
+      } else if (value is PercentValue) {
+        return new Data.PercentValue(((PercentValue)value).Value);
       } else if (value is DoubleValue) {
         return new Data.DoubleValue(((DoubleValue)value).Value);
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBRun.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBRun.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBRun.cs	(revision 7573)
@@ -184,4 +184,8 @@
           v.Value = ((Data.IntValue)item.Value).Value;
           value = v;
+        } else if (item.Value is Data.PercentValue) {
+          PercentValue v = new PercentValue();
+          v.Value = ((Data.PercentValue)item.Value).Value;
+          value = v;
         } else if (item.Value is Data.DoubleValue) {
           DoubleValue v = new DoubleValue();
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/RunCreationServiceClient.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/RunCreationServiceClient.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/RunCreationServiceClient.cs	(revision 7573)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.239
+//     Runtime Version:4.0.30319.261
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -654,10 +654,11 @@
         "aTransfer")]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.FloatValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BinaryValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.DoubleValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.StringValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.PercentValue))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BoolValue))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.IntValue))]
     [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.LongValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.DoubleValue))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.StringValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BinaryValue))]
     public partial class Value : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
     {
@@ -756,13 +757,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="BinaryValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-        "aTransfer")]
-    public partial class BinaryValue : HeuristicLab.Clients.OKB.RunCreation.Value
-    {
-        
-        private byte[] ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public byte[] Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="DoubleValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class DoubleValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private double ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Value
         {
             get
@@ -772,5 +773,5 @@
             set
             {
-                if ((object.ReferenceEquals(this.ValueField, value) != true))
+                if ((this.ValueField.Equals(value) != true))
                 {
                     this.ValueField = value;
@@ -783,13 +784,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="BoolValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-        "aTransfer")]
-    public partial class BoolValue : HeuristicLab.Clients.OKB.RunCreation.Value
-    {
-        
-        private bool ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public bool Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="StringValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class StringValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private string ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Value
         {
             get
@@ -799,5 +800,5 @@
             set
             {
-                if ((this.ValueField.Equals(value) != true))
+                if ((object.ReferenceEquals(this.ValueField, value) != true))
                 {
                     this.ValueField = value;
@@ -810,13 +811,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="IntValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-        "aTransfer")]
-    public partial class IntValue : HeuristicLab.Clients.OKB.RunCreation.Value
-    {
-        
-        private int ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public int Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="PercentValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class PercentValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private double ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Value
         {
             get
@@ -837,13 +838,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="LongValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-        "aTransfer")]
-    public partial class LongValue : HeuristicLab.Clients.OKB.RunCreation.Value
-    {
-        
-        private long ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public long Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="BoolValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class BoolValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private bool ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool Value
         {
             get
@@ -864,13 +865,13 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="DoubleValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-        "aTransfer")]
-    public partial class DoubleValue : HeuristicLab.Clients.OKB.RunCreation.Value
-    {
-        
-        private double ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public double Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="IntValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class IntValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private int ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int Value
         {
             get
@@ -891,13 +892,40 @@
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="StringValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-        "aTransfer")]
-    public partial class StringValue : HeuristicLab.Clients.OKB.RunCreation.Value
-    {
-        
-        private string ValueField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Value
+    [System.Runtime.Serialization.DataContractAttribute(Name="LongValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class LongValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private long ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public long Value
+        {
+            get
+            {
+                return this.ValueField;
+            }
+            set
+            {
+                if ((this.ValueField.Equals(value) != true))
+                {
+                    this.ValueField = value;
+                    this.RaisePropertyChanged("Value");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="BinaryValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class BinaryValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private byte[] ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public byte[] Value
         {
             get
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/ValueNameType.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/ValueNameType.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/ValueNameType.cs	(revision 7573)
@@ -28,5 +28,6 @@
     Double = 4,
     String = 5,
-    Binary = 6
+    Binary = 6,
+    Percent = 7
   }
 }
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj	(revision 7573)
@@ -147,4 +147,6 @@
     <Compile Include="Query\DataTransfer\BoolValue.cs" />
     <Compile Include="Query\DataTransfer\CombinedFilter.cs" />
+    <Compile Include="Query\DataTransfer\OrdinalComparisonPercentFilter.cs" />
+    <Compile Include="Query\DataTransfer\NameOrdinalComparisonPercentFilter.cs" />
     <Compile Include="Query\DataTransfer\OrdinalComparisonFloatFilter.cs" />
     <Compile Include="Query\DataTransfer\OrdinalComparisonDoubleFilter.cs" />
@@ -172,4 +174,5 @@
     <Compile Include="Query\DataTransfer\OrdinalComparisonIntFilter.cs" />
     <Compile Include="Query\DataTransfer\OrdinalComparisonLongFilter.cs" />
+    <Compile Include="Query\DataTransfer\PercentValue.cs" />
     <Compile Include="Query\DataTransfer\Problem.cs" />
     <Compile Include="Query\DataTransfer\Run.cs" />
@@ -192,4 +195,5 @@
     <Compile Include="Query\Filters\BoolValueFilter.cs" />
     <Compile Include="Query\Filters\BinaryValueFilter.cs" />
+    <Compile Include="Query\Filters\PercentValueFilter.cs" />
     <Compile Include="Query\Filters\StringValueFilter.cs" />
     <Compile Include="Query\Filters\FloatValueFilter.cs" />
@@ -233,4 +237,5 @@
     <Compile Include="RunCreation\DataTransfer\BinaryValue.cs" />
     <Compile Include="RunCreation\DataTransfer\BoolValue.cs" />
+    <Compile Include="RunCreation\DataTransfer\PercentValue.cs" />
     <Compile Include="RunCreation\DataTransfer\DataType.cs" />
     <Compile Include="RunCreation\DataTransfer\DoubleValue.cs" />
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/Convert.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/Convert.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/Convert.cs	(revision 7573)
@@ -62,4 +62,6 @@
       } else if (source.ValueName.Type == DA.ValueNameType.Double) {
         return new DT.DoubleValue { Name = source.ValueName.Name, DataType = Convert.ToDto(source.DataType), Value = source.DoubleValue.GetValueOrDefault() };
+      } else if (source.ValueName.Type == DA.ValueNameType.Percent) {
+        return new DT.PercentValue { Name = source.ValueName.Name, DataType = Convert.ToDto(source.DataType), Value = source.DoubleValue.GetValueOrDefault() };
       } else if (source.ValueName.Type == DA.ValueNameType.String) {
         return new DT.StringValue { Name = source.ValueName.Name, DataType = Convert.ToDto(source.DataType), Value = source.StringValue };
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/Filter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/Filter.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/Filter.cs	(revision 7573)
@@ -33,4 +33,5 @@
   [KnownType(typeof(NameOrdinalComparisonFloatFilter))]
   [KnownType(typeof(NameOrdinalComparisonDoubleFilter))]
+  [KnownType(typeof(NameOrdinalComparisonPercentFilter))]
   [KnownType(typeof(NameOrdinalComparisonIntFilter))]
   [KnownType(typeof(NameOrdinalComparisonLongFilter))]
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/NameOrdinalComparisonPercentFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/NameOrdinalComparisonPercentFilter.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/NameOrdinalComparisonPercentFilter.cs	(revision 7573)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.Query.DataTransfer {
+  [DataContract]
+  public class NameOrdinalComparisonPercentFilter : OrdinalComparisonPercentFilter {
+    [DataMember]
+    public string Name { get; protected set; }
+
+    public NameOrdinalComparisonPercentFilter(string filterTypeName, string label, string name)
+      : base(filterTypeName, label) {
+      Name = name;
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/OrdinalComparisonPercentFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/OrdinalComparisonPercentFilter.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/OrdinalComparisonPercentFilter.cs	(revision 7573)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.Query.DataTransfer {
+  [DataContract]
+  public class OrdinalComparisonPercentFilter : OrdinalComparisonFilter {
+    [DataMember]
+    public double Value { get; set; }
+
+    public OrdinalComparisonPercentFilter(string filterTypeName, string label) {
+      FilterTypeName = filterTypeName;
+      Label = label;
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/PercentValue.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/PercentValue.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/PercentValue.cs	(revision 7573)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.Query.DataTransfer {
+  [DataContract]
+  public class PercentValue : Value {
+    [DataMember]
+    public double Value { get; set; }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/Value.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/Value.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/DataTransfer/Value.cs	(revision 7573)
@@ -31,4 +31,5 @@
   [KnownType(typeof(StringValue))]
   [KnownType(typeof(BinaryValue))]
+  [KnownType(typeof(PercentValue))]
   public abstract class Value {
     [DataMember]
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/Filters/PercentValueFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/Filters/PercentValueFilter.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/Filters/PercentValueFilter.cs	(revision 7573)
@@ -0,0 +1,65 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Linq;
+using System.Linq.Expressions;
+using HeuristicLab.Services.OKB.DataAccess;
+
+namespace HeuristicLab.Services.OKB.Query.Filters {
+  public class PercentValueFilter : IFilter {
+    public string Name { get; protected set; }
+    public DataTransfer.OrdinalComparison Comparison { get; set; }
+    public double Value { get; set; }
+
+    public Expression<Func<Run, bool>> Expression {
+      get {
+        switch (Comparison) {
+          case DataTransfer.OrdinalComparison.Less:
+            return x => x.Values.Any(y => (y.ValueName.Name == Name) && (y.DoubleValue < Value));
+          case DataTransfer.OrdinalComparison.LessOrEqual:
+            return x => x.Values.Any(y => (y.ValueName.Name == Name) && (y.DoubleValue <= Value));
+          case DataTransfer.OrdinalComparison.Equal:
+            return x => x.Values.Any(y => (y.ValueName.Name == Name) && (y.DoubleValue == Value));
+          case DataTransfer.OrdinalComparison.GreaterOrEqual:
+            return x => x.Values.Any(y => (y.ValueName.Name == Name) && (y.DoubleValue >= Value));
+          case DataTransfer.OrdinalComparison.Greater:
+            return x => x.Values.Any(y => (y.ValueName.Name == Name) && (y.DoubleValue > Value));
+          case DataTransfer.OrdinalComparison.NotEqual:
+            return x => x.Values.Any(y => (y.ValueName.Name == Name) && (y.DoubleValue != Value));
+          default:
+            return x => true;
+        }
+      }
+    }
+
+    public PercentValueFilter(string name, DataTransfer.OrdinalComparison comparison, double value) {
+      Name = name;
+      Comparison = comparison;
+      Value = value;
+    }
+    public PercentValueFilter(DataTransfer.NameOrdinalComparisonPercentFilter filter) {
+      Name = filter.Name;
+      Comparison = filter.Comparison;
+      Value = filter.Value;
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/QueryService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/QueryService.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Query/QueryService.cs	(revision 7573)
@@ -87,4 +87,10 @@
             name
           ));
+        foreach (string name in okb.ValueNames.Where(x => (x.Category == ValueNameCategory.Parameter) && (x.Type == ValueNameType.Percent)).Select(x => x.Name).Distinct())
+          filters.Add(new NameOrdinalComparisonPercentFilter(
+            typeof(PercentValueFilter).AssemblyQualifiedName,
+            "Parameter " + name + " Value",
+            name
+          ));
         foreach (string name in okb.ValueNames.Where(x => (x.Category == ValueNameCategory.Parameter) && (x.Type == ValueNameType.String)).Select(x => x.Name).Distinct())
           filters.Add(new NameStringComparisonFilter(
@@ -144,4 +150,10 @@
             name
           ));
+        foreach (string name in okb.ValueNames.Where(x => (x.Category == ValueNameCategory.Result) && (x.Type == ValueNameType.Percent)).Select(x => x.Name).Distinct())
+          filters.Add(new NameOrdinalComparisonPercentFilter(
+            typeof(PercentValueFilter).AssemblyQualifiedName,
+            "Result " + name + " Value",
+            name
+          ));
         foreach (string name in okb.ValueNames.Where(x => (x.Category == ValueNameCategory.Result) && (x.Type == ValueNameType.String)).Select(x => x.Name).Distinct())
           filters.Add(new NameStringComparisonFilter(
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/Convert.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/Convert.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/Convert.cs	(revision 7573)
@@ -86,4 +86,7 @@
         entity.ValueName = Convert.ToEntity(source.Name, category, DA.ValueNameType.Double, okb);
         entity.DoubleValue = ((DT.DoubleValue)source).Value;
+      } else if (source is DT.PercentValue) {
+        entity.ValueName = Convert.ToEntity(source.Name, category, DA.ValueNameType.Percent, okb);
+        entity.DoubleValue = ((DT.PercentValue)source).Value;
       } else if (source is DT.StringValue) {
         entity.ValueName = Convert.ToEntity(source.Name, category, DA.ValueNameType.String, okb);
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/DataTransfer/PercentValue.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/DataTransfer/PercentValue.cs	(revision 7573)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/DataTransfer/PercentValue.cs	(revision 7573)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.OKB.RunCreation.DataTransfer {
+  [DataContract]
+  public class PercentValue : Value {
+    [DataMember]
+    public double Value { get; set; }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/DataTransfer/Value.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/DataTransfer/Value.cs	(revision 7556)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/RunCreation/DataTransfer/Value.cs	(revision 7573)
@@ -31,4 +31,5 @@
   [KnownType(typeof(StringValue))]
   [KnownType(typeof(BinaryValue))]
+  [KnownType(typeof(PercentValue))]
   public abstract class Value {
     [DataMember]
