diff --git a/src/main/java/de/stups/probkodkod/KodkodSession.java b/src/main/java/de/stups/probkodkod/KodkodSession.java
index 58ce1e56eb51126d4da2fdb8321eb4ea18d87bcf..04a8c81760062045d5f1f703bde823c9278fca70 100644
--- a/src/main/java/de/stups/probkodkod/KodkodSession.java
+++ b/src/main/java/de/stups/probkodkod/KodkodSession.java
@@ -6,7 +6,6 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import de.prob.prolog.output.IPrologTermOutput;
-import de.stups.probkodkod.sat.SAT4JWithTimeoutFactory;
 import kodkod.engine.Solver;
 import kodkod.engine.satlab.SATFactory;
 import kodkod.instance.TupleSet;
@@ -35,23 +34,10 @@ public class KodkodSession {
 		problems.put(id, problem);
 
 		final Solver solver = new Solver();
-		switch (sat) {
-		case sat4j:
-			solver.options().setSolver(new SAT4JWithTimeoutFactory(timeout));
-			break;
-		case glucose:
-			solver.options().setSolver(SATFactory.Glucose);
-			break;
-		case lingeling:
-			solver.options().setSolver(SATFactory.Lingeling);
-			break;
-		case minisat:
-			solver.options().setSolver(SATFactory.MiniSat);
-			break;
-		default:
-			solver.options().setSolver(new SAT4JWithTimeoutFactory(timeout));
-			break;
-		}
+
+		SATFactory satFactory = SolverChecker.determineSatFactory(sat);
+		solver.options().setSolver(satFactory);
+
 		solver.options().setSymmetryBreaking(symmetry);
 		final Integer bitwidth = problem.getBitwidth();
 		if (bitwidth != null) {