Index: /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/MultiObjectiveProgrammableProblem.cs
===================================================================
--- /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/MultiObjectiveProgrammableProblem.cs	(revision 11785)
+++ /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/MultiObjectiveProgrammableProblem.cs	(revision 11786)
@@ -21,5 +21,4 @@
 
 using System.Linq;
-using HeuristicLab.Analysis;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -43,8 +42,7 @@
     protected MultiObjectiveProgrammableProblem()
       : base() {
-        Parameters.Add(new ValueParameter<BoolArray>("Maximization", "Set to false if the problem should be minimized.", new BoolArray(Maximization)));
+      Parameters.Add(new ValueParameter<BoolArray>("Maximization", "Set to false if the problem should be minimized.", new BoolArray()));
 
       Operators.Add(Evaluator);
-      Operators.Add(new BestScopeSolutionAnalyzer());
       Operators.Add(new MultiObjectiveAnalyzer());
 
@@ -61,4 +59,8 @@
     public virtual void Analyze(Individual[] individuals, double[][] qualities, ResultCollection results) { }
 
+    protected override void OnEncodingChanged() {
+      base.OnEncodingChanged();
+      Parameters["Maximization"].ActualValue = new BoolArray(Maximization);
+    }
 
     protected override void OnEvaluatorChanged() {
@@ -67,6 +69,5 @@
     }
 
-    protected override void ParameterizeOperators() {
-      base.ParameterizeOperators();
+    private void ParameterizeOperators() {
       foreach (var op in Operators.OfType<IMultiObjectiveEvaluationOperator>())
         op.EvaluateFunc = Evaluate;
Index: /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/ProgrammableProblem.cs
===================================================================
--- /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/ProgrammableProblem.cs	(revision 11785)
+++ /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/ProgrammableProblem.cs	(revision 11786)
@@ -42,4 +42,7 @@
     }
 
+    //mkommend necessary for reuse of operators if the encoding changes
+    private TEncoding oldEncoding;
+
     IEncoding IProblemDefinition.Encoding { get { return Encoding; } }
     public TEncoding Encoding {
@@ -49,10 +52,4 @@
         EncodingParameter.Value = value;
       }
-    }
-    //mkommend necessary for reuse of operators if the encoding changes
-    private TEncoding oldEncoding;
-
-    public virtual IEnumerable<Individual> GetNeighbors(Individual individual, IRandom random) {
-      return Enumerable.Empty<Individual>();
     }
 
@@ -97,4 +94,7 @@
       oldEncoding = Encoding;
 
+      foreach (var op in Operators.OfType<IEncodingOperator>())
+        op.EncodingParameter.ActualName = EncodingParameter.Name;
+
       var solutionCreatorType = Encoding.GetType().BaseType.GetGenericArguments();
       var paramType = typeof(ValueParameter<>).MakeGenericType(solutionCreatorType);
@@ -111,12 +111,4 @@
       base.OnSolutionCreatorChanged();
       Encoding.SolutionCreator = SolutionCreator;
-    }
-
-
-    protected virtual void ParameterizeOperators() {
-      foreach (var op in Operators.OfType<IEncodingOperator>())
-        op.EncodingParameter.ActualName = EncodingParameter.Name;
-      foreach (var op in Operators.OfType<INeighborBasedOperator>())
-        op.GetNeighborsFunc = GetNeighbors;
     }
 
Index: /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/Scripts/Templates/CompiledMultiObjectiveProblemDefinition.cs
===================================================================
--- /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/Scripts/Templates/CompiledMultiObjectiveProblemDefinition.cs	(revision 11785)
+++ /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/Scripts/Templates/CompiledMultiObjectiveProblemDefinition.cs	(revision 11786)
@@ -31,5 +31,5 @@
       var qualities = new[] { 0.0, 0.0 };
       // use vars.yourVariable to access variables in the variable store i.e. yourVariable
-      // qualities = new [] { individual.RealVector(""r"").Sum(x => x * x), individual.RealVector(""r"").Sum(x => x * x * x) };
+      // qualities = new [] { individual.RealVector("r").Sum(x => x * x), individual.RealVector("r").Sum(x => x * x * x) };
       return qualities;
     }
Index: /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/SingleObjectiveProgrammableProblem.cs
===================================================================
--- /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/SingleObjectiveProgrammableProblem.cs	(revision 11785)
+++ /branches/ProgrammableProblem/HeuristicLab.Problems.Programmable/3.3/New/SingleObjectiveProgrammableProblem.cs	(revision 11786)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Collections.Generic;
 using System.Linq;
 using HeuristicLab.Analysis;
@@ -44,5 +45,5 @@
     protected SingleObjectiveProgrammableProblem()
       : base() {
-      Parameters.Add(new FixedValueParameter<BoolValue>("Maximization", "Set to false if the problem should be minimized.", new BoolValue(Maximization)));
+      Parameters.Add(new FixedValueParameter<BoolValue>("Maximization", "Set to false if the problem should be minimized.", new BoolValue()));
       Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this problem."));
 
@@ -66,5 +67,14 @@
     public abstract double Evaluate(Individual individual, IRandom random);
     public virtual void Analyze(Individual[] individuals, double[] qualities, ResultCollection results) { }
+    public virtual IEnumerable<Individual> GetNeighbors(Individual individual, IRandom random) {
+      return Enumerable.Empty<Individual>();
+    }
 
+
+    protected override void OnEncodingChanged() {
+      base.OnEncodingChanged();
+      var max = (BoolValue)Parameters["Maximization"].ActualValue;
+      max.Value = Maximization;
+    }
 
     protected override void OnEvaluatorChanged() {
@@ -73,10 +83,11 @@
     }
 
-    protected override void ParameterizeOperators() {
-      base.ParameterizeOperators();
+    private void ParameterizeOperators() {
       foreach (var op in Operators.OfType<ISingleObjectiveEvaluationOperator>())
         op.EvaluateFunc = Evaluate;
       foreach (var op in Operators.OfType<ISingleObjectiveAnalysisOperator>())
         op.AnalyzeAction = Analyze;
+      foreach (var op in Operators.OfType<INeighborBasedOperator>())
+        op.GetNeighborsFunc = GetNeighbors;
     }
 
