Index: trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 5300)
+++ trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 5343)
@@ -12,5 +12,6 @@
     <AssemblyName>HeuristicLab.Optimization-3.3</AssemblyName>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
     <FileAlignment>512</FileAlignment>
     <SignAssembly>true</SignAssembly>
@@ -117,4 +118,5 @@
     <Compile Include="Interfaces\IRealVectorDecoder.cs" />
     <Compile Include="Interfaces\IRealVectorEncoder.cs" />
+    <Compile Include="MultiObjectiveProblem.cs" />
     <Compile Include="Problem.cs" />
     <Compile Include="RunCollectionConstraints\RunCollectionComparisonConstraint.cs" />
Index: trunk/sources/HeuristicLab.Optimization/3.3/MultiObjectiveProblem.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization/3.3/MultiObjectiveProblem.cs	(revision 5343)
+++ trunk/sources/HeuristicLab.Optimization/3.3/MultiObjectiveProblem.cs	(revision 5343)
@@ -0,0 +1,59 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization {
+  [Item("Multi-Objective Problem", "A base class for multi-objective problems.")]
+  [StorableClass]
+  public abstract class MultiObjectiveProblem<T, U> : Problem<T, U>, IMultiObjectiveProblem
+    where T : class, IMultiObjectiveEvaluator
+    where U : class, ISolutionCreator {
+    private const string MaximizationParameterName = "Maximization";
+
+    [StorableConstructor]
+    protected MultiObjectiveProblem(bool deserializing) : base(deserializing) { }
+    protected MultiObjectiveProblem(MultiObjectiveProblem<T, U> original, Cloner cloner) : base(original, cloner) { }
+    protected MultiObjectiveProblem()
+      : base() {
+      Parameters.Add(new ValueParameter<BoolArray>(MaximizationParameterName, "Determines for each objective whether it should be maximized or minimized."));
+    }
+
+    public ValueParameter<BoolArray> MaximizationParameter {
+      get { return (ValueParameter<BoolArray>)Parameters[MaximizationParameterName]; }
+    }
+    IParameter IMultiObjectiveProblem.MaximizationParameter {
+      get { return MaximizationParameter; }
+    }
+    public BoolArray Maximization {
+      get { return MaximizationParameter.Value; }
+      protected set { MaximizationParameter.Value = value; }
+    }
+
+    IMultiObjectiveEvaluator IMultiObjectiveProblem.Evaluator {
+      get { return Evaluator; }
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Optimization/3.3/SingleObjectiveProblem.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization/3.3/SingleObjectiveProblem.cs	(revision 5300)
+++ trunk/sources/HeuristicLab.Optimization/3.3/SingleObjectiveProblem.cs	(revision 5343)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.Optimization {
-  [Item("Single Objective Problem", "Represents the base class for a single objective problem.")]
+  [Item("Single-Objective Problem", "A base class for single-objective problems.")]
   [StorableClass]
   public abstract class SingleObjectiveProblem<T, U> : Problem<T, U>, ISingleObjectiveProblem
@@ -37,8 +37,5 @@
     [StorableConstructor]
     protected SingleObjectiveProblem(bool deserializing) : base(deserializing) { }
-    protected SingleObjectiveProblem(SingleObjectiveProblem<T, U> original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
+    protected SingleObjectiveProblem(SingleObjectiveProblem<T, U> original, Cloner cloner) : base(original, cloner) { }
     protected SingleObjectiveProblem()
       : base() {
@@ -47,12 +44,4 @@
     }
 
-
-    #region properties
-    ISingleObjectiveEvaluator ISingleObjectiveProblem.Evaluator { get { return Evaluator; } }
-
-    public BoolValue Maximization {
-      get { return MaximizationParameter.Value; }
-      protected set { MaximizationParameter.Value = value; }
-    }
     public ValueParameter<BoolValue> MaximizationParameter {
       get { return (ValueParameter<BoolValue>)Parameters[MaximizationParameterName]; }
@@ -61,9 +50,9 @@
       get { return MaximizationParameter; }
     }
+    public BoolValue Maximization {
+      get { return MaximizationParameter.Value; }
+      protected set { MaximizationParameter.Value = value; }
+    }
 
-    public DoubleValue BestKnownQuality {
-      get { return BestKnownQualityParameter.Value; }
-      protected set { BestKnownQualityParameter.Value = value; }
-    }
     public ValueParameter<DoubleValue> BestKnownQualityParameter {
       get { return (ValueParameter<DoubleValue>)Parameters[BestKnownQualityParameterName]; }
@@ -72,5 +61,12 @@
       get { return BestKnownQualityParameter; }
     }
-    #endregion
+    public DoubleValue BestKnownQuality {
+      get { return BestKnownQualityParameter.Value; }
+      protected set { BestKnownQualityParameter.Value = value; }
+    }
+
+    ISingleObjectiveEvaluator ISingleObjectiveProblem.Evaluator {
+      get { return Evaluator; }
+    }
   }
 }
