Index: trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj	(revision 7622)
+++ trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj	(revision 7626)
@@ -132,4 +132,5 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="ReferenceEqualityComparer.cs" />
+    <Compile Include="TypeEqualityComparer.cs" />
     <Compile Include="TypeExtensions.cs" />
     <Compile Include="DoubleExtensions.cs">
Index: trunk/sources/HeuristicLab.Common/3.3/TypeEqualityComparer.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.3/TypeEqualityComparer.cs	(revision 7626)
+++ trunk/sources/HeuristicLab.Common/3.3/TypeEqualityComparer.cs	(revision 7626)
@@ -0,0 +1,36 @@
+﻿#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.Collections.Generic;
+
+namespace HeuristicLab.Common {
+  public class TypeEqualityComparer<T> : IEqualityComparer<T> {
+
+    bool IEqualityComparer<T>.Equals(T x, T y) {
+      return x.GetType().Equals(y.GetType());
+    }
+
+    int IEqualityComparer<T>.GetHashCode(T obj) {
+      if (obj == null) return 0;
+      return obj.GetHashCode();
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs	(revision 7622)
+++ trunk/sources/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs	(revision 7626)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Collections.Generic;
 using System.Drawing;
 using System.Linq;
@@ -253,5 +254,11 @@
 
     private void InitializeOperators() {
-      Operators.AddRange(ApplicationManager.Manager.GetInstances<IPermutationOperator>());
+      var defaultOperators = new HashSet<IPermutationOperator>(new IPermutationOperator[] {
+        new PartiallyMatchedCrossover(),
+        new Swap2Manipulator(),
+        new ExhaustiveSwap2MoveGenerator()
+      });
+      Operators.AddRange(defaultOperators);
+      Operators.AddRange(ApplicationManager.Manager.GetInstances<IPermutationOperator>().Except(defaultOperators, new TypeEqualityComparer<IPermutationOperator>()));
       Operators.RemoveAll(x => x is ISingleObjectiveMoveEvaluator);
       Operators.AddRange(ApplicationManager.Manager.GetInstances<IQAPMoveEvaluator>());
Index: trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 7622)
+++ trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 7626)
@@ -226,5 +226,11 @@
       Operators.Add(new TSPPopulationDiversityAnalyzer());
       ParameterizeAnalyzers();
-      Operators.AddRange(ApplicationManager.Manager.GetInstances<IPermutationOperator>().Cast<IOperator>());
+      var defaultOperators = new HashSet<IPermutationOperator>(new IPermutationOperator[] {
+        new OrderCrossover2(),
+        new InversionManipulator(),
+        new StochasticInversionMultiMoveGenerator()
+      });
+      Operators.AddRange(defaultOperators);
+      Operators.AddRange(ApplicationManager.Manager.GetInstances<IPermutationOperator>().Except(defaultOperators, new TypeEqualityComparer<IPermutationOperator>()));
       ParameterizeOperators();
       UpdateMoveEvaluators();
