diff --git a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..6cddf3e3f7dd1558697f79ab671e88940ca80b5c
--- /dev/null
+++ b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java
@@ -0,0 +1,39 @@
+package it.unibz.inf.isochrone.network;
+
+import it.unibz.inf.isochrone.algorithm.Isochrone;
+import it.unibz.inf.isochrone.config.ConfigDataset;
+import it.unibz.inf.isochrone.util.Query;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.testng.Assert;
+
+final class AlgorithmHelper {
+
+	// Constructor
+
+	private AlgorithmHelper() {
+	}
+
+	// Public static methods
+
+	public static void run(final Class<? extends Isochrone> algorithmClass, final TestParameters params) {
+		run(algorithmClass, params, true);
+	}
+
+	public static void run(final Class<? extends Isochrone> algorithmClass, final TestParameters params, final boolean expireNodes) {
+		Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), expireNodes, params.getMode());
+		query.setNodes(params.getNodeId());
+
+		Isochrone algorithm = null;
+		try {
+			algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(params.getDataset(), query);
+		} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+			Assert.fail(e.getMessage());
+		}
+
+		algorithm.compute();
+	}
+
+
+}
diff --git a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java
index c97ec44aa995051fc5b84b69eed75b4c676a9606..563dfc5ccc113a22f56a8b0d13ffb78cc63ad8d3 100644
--- a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java
+++ b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmTest.java
@@ -1,20 +1,15 @@
 package it.unibz.inf.isochrone.network;
 
-import it.unibz.inf.isochrone.algorithm.Isochrone;
 import it.unibz.inf.isochrone.algorithm.MDijkstra;
 import it.unibz.inf.isochrone.algorithm.MineX;
 import it.unibz.inf.isochrone.algorithm.MrneX;
-import it.unibz.inf.isochrone.config.ConfigDataset;
 import it.unibz.inf.isochrone.util.EnumContainer.Dataset;
 import it.unibz.inf.isochrone.util.EnumContainer.Direction;
 import it.unibz.inf.isochrone.util.EnumContainer.Mode;
-import it.unibz.inf.isochrone.util.Query;
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 
-import org.testng.Assert;
 import org.testng.annotations.Test;
 
 public class AlgorithmTest {
@@ -26,37 +21,23 @@ public class AlgorithmTest {
 
 	@Test
 	public void testMDijkstra() {
-		run(MDijkstra.class, false);
+		AlgorithmHelper.run(MDijkstra.class, getParams(), false);
 	}
 
 	@Test
 	public void testMineX() {
-		run(MineX.class);
+		AlgorithmHelper.run(MineX.class, getParams());
 	}
 
 	@Test
 	public void testMrneX() {
-		run(MrneX.class);
+		AlgorithmHelper.run(MrneX.class, getParams());
 	}
 
 	// Private methods
 
-	private static void run(final Class<? extends Isochrone> algorithmClass) {
-		run(algorithmClass, true);
-	}
-
-	private static void run(final Class<? extends Isochrone> algorithmClass, final boolean expireNodes) {
-		final Query query = new Query(Direction.INCOMING, WALKING_SPEED, DURATION, TIME, expireNodes, Mode.MULTIMODAL);
-		query.setNodes(NODE_ID);
-
-		Isochrone algorithm = null;
-		try {
-			algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query);
-		} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
-			Assert.fail(e.getLocalizedMessage());
-		}
-
-		algorithm.compute();
+	private static TestParameters getParams() {
+		return new TestParameters(WALKING_SPEED, DURATION, TIME, Mode.MULTIMODAL, NODE_ID, TEST_DATASET, Integer.MAX_VALUE, Direction.INCOMING);
 	}
 
 }
diff --git a/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java b/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java
index b3e96a34722842adfd2f055b03c56fe56ec0be0a..7afdf0ba471664eb652f0c9385ce3487a35377b4 100644
--- a/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java
+++ b/src/test/java/it/unibz/inf/isochrone/network/RuntimeComplex.java
@@ -4,17 +4,14 @@ import it.unibz.inf.isochrone.algorithm.Isochrone;
 import it.unibz.inf.isochrone.algorithm.MDijkstra;
 import it.unibz.inf.isochrone.algorithm.MineX;
 import it.unibz.inf.isochrone.algorithm.MrneX;
-import it.unibz.inf.isochrone.config.ConfigDataset;
 import it.unibz.inf.isochrone.util.EnumContainer.Dataset;
 import it.unibz.inf.isochrone.util.EnumContainer.Direction;
 import it.unibz.inf.isochrone.util.EnumContainer.Mode;
-import it.unibz.inf.isochrone.util.Query;
 
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.lang.reflect.InvocationTargetException;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.GregorianCalendar;
@@ -27,7 +24,6 @@ import java.util.TreeSet;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -40,7 +36,6 @@ import org.testng.annotations.Test;
  */
 public final class RuntimeComplex {
 	private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeComplex.class);
-	private static final Dataset TEST_DATASET = Dataset.BZ;
 	private static final int REPEAT_COUNT = 5;
 	private static final int BZ_NODE_ID = 2000500;
 	private static final Calendar BZ_TIME = new GregorianCalendar(2011, 5, 10, 10, 10, 0);
@@ -142,7 +137,7 @@ public final class RuntimeComplex {
 		final Collection<TestParameters> allParams = datasets.values();
 		for (final TestParameters params : allParams) {
 			long startTime = Calendar.getInstance().getTimeInMillis();
-			runWithParams(clazz, params);
+			AlgorithmHelper.run(clazz, params);
 
 			long runTime = Calendar.getInstance().getTimeInMillis() - startTime;
 			LOGGER.debug(" - runtime \"" + params.getRuntime() + "\": " + runTime + "msec");
@@ -169,20 +164,6 @@ public final class RuntimeComplex {
 		}
 	}
 
-	private static void runWithParams(final Class<? extends Isochrone> algorithmClass, final TestParameters params) {
-		Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), true, params.getMode());
-		query.setNodes(params.getNodeId());
-
-		Isochrone algorithm = null;
-		try {
-			algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query);
-		} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
-			Assert.fail(e.getMessage());
-		}
-
-		algorithm.compute();
-	}
-
 	private static void writeMapToXML(final File file, final Set<Entry<String, Map<String, Long>>> resultSet, final int repeatCount) {
 		BufferedWriter fw = null;
 		try {
diff --git a/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java b/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java
index 031194b4a1cc77c8ee7172af4af5df551547d614..5a2a9b4bc4c684fc75a097603799ff653688e665 100644
--- a/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java
+++ b/src/test/java/it/unibz/inf/isochrone/network/RuntimeSimple.java
@@ -4,16 +4,11 @@ import it.unibz.inf.isochrone.algorithm.Isochrone;
 import it.unibz.inf.isochrone.algorithm.MDijkstra;
 import it.unibz.inf.isochrone.algorithm.MineX;
 import it.unibz.inf.isochrone.algorithm.MrneX;
-import it.unibz.inf.isochrone.config.ConfigDataset;
-import it.unibz.inf.isochrone.util.EnumContainer.Dataset;
-import it.unibz.inf.isochrone.util.Query;
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.Calendar;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.Assert;
 import org.testng.annotations.Test;
 
 /**
@@ -26,7 +21,6 @@ import org.testng.annotations.Test;
  */
 public final class RuntimeSimple {
 	private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeSimple.class);
-	private static final Dataset TEST_DATASET = Dataset.BZ;
 
 	@Test
 	public void runMDijkstra() {
@@ -49,24 +43,10 @@ public final class RuntimeSimple {
 		LOGGER.info("Executing \"" + algorithmClass.getSimpleName() + "\"");
 		final TestParameters params = new TestParameters();
 		long startTime = Calendar.getInstance().getTimeInMillis();
-		runWithParams(algorithmClass, params);
+		AlgorithmHelper.run(algorithmClass, params);
 		long runTime = Calendar.getInstance().getTimeInMillis() - startTime;
 		LOGGER.info(" - runtime: \"" + params.getRuntime() + "\": " + runTime + "msec");
 		LOGGER.info("-----------------------------");
 	}
 
-	private static void runWithParams(final Class<? extends Isochrone> algorithmClass, final TestParameters params) {
-		Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), true, params.getMode());
-		query.setNodes(params.getNodeId());
-
-		Isochrone algorithm = null;
-		try {
-			algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query);
-		} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
-			Assert.fail(e.getLocalizedMessage());
-		}
-
-		algorithm.compute();
-	}
-
 }