diff --git a/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java b/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
index 73e70005f32a58284d876f8f7c3d5cd465113ef5..86661dab43a05a9c5f2844bcdce8fb1733ae9283 100644
--- a/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
+++ b/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
@@ -37,10 +37,14 @@ public abstract class Isochrone {
 	 * Instantiates a new isochrone object.
 	 *
 	 * @param query The parameters for the isochrone
+	 * @throws AlgorithmException thrown if there are no date codes in the databse for the specified query
 	 */
-	public Isochrone(final Query query) {
+	public Isochrone(final ConfigDataset config, final Query query) throws AlgorithmException {
 		this.query = query;
-		queue = new PriorityQueue<Node>();
+		this.db = new Database<>(config, query.getMode(), query.getDir());
+		this.queue = new PriorityQueue<Node>();
+
+		initDateCodes();
 	}
 
 	/**
diff --git a/src/main/java/it/unibz/inf/isochrone/algorithm/MDijkstra.java b/src/main/java/it/unibz/inf/isochrone/algorithm/MDijkstra.java
index bd6d26881960ac4e112ca46d89903b541380d338..b5a953bef1035bceafea1195ca41aae90d3547c9 100644
--- a/src/main/java/it/unibz/inf/isochrone/algorithm/MDijkstra.java
+++ b/src/main/java/it/unibz/inf/isochrone/algorithm/MDijkstra.java
@@ -1,7 +1,6 @@
 package it.unibz.inf.isochrone.algorithm;
 
 import it.unibz.inf.isochrone.config.ConfigDataset;
-import it.unibz.inf.isochrone.db.Database;
 import it.unibz.inf.isochrone.network.Link;
 import it.unibz.inf.isochrone.network.Node;
 import it.unibz.inf.isochrone.util.Query;
@@ -23,10 +22,8 @@ public class MDijkstra extends Isochrone {
 	private final Map<Integer, Link> links;
 
 	public MDijkstra(final ConfigDataset config, final Query query) throws AlgorithmException {
-		super(query);
+		super(config, query);
 
-		initDateCodes();
-		db = new Database<>(config, query.getMode(), query.getDir());
 		nodes = new HashMap<Integer, Node>();
 		links = new LinkedHashMap<Integer, Link>();
 
diff --git a/src/main/java/it/unibz/inf/isochrone/algorithm/MineX.java b/src/main/java/it/unibz/inf/isochrone/algorithm/MineX.java
index bb44b802a5d0c86116396bb89244552195abfe1d..7cbc5a1c749c45e79bb7111bb948b537d3b3357f 100644
--- a/src/main/java/it/unibz/inf/isochrone/algorithm/MineX.java
+++ b/src/main/java/it/unibz/inf/isochrone/algorithm/MineX.java
@@ -1,7 +1,6 @@
 package it.unibz.inf.isochrone.algorithm;
 
 import it.unibz.inf.isochrone.config.ConfigDataset;
-import it.unibz.inf.isochrone.db.Database;
 import it.unibz.inf.isochrone.network.Link;
 import it.unibz.inf.isochrone.network.Node;
 import it.unibz.inf.isochrone.util.Query;
@@ -18,10 +17,8 @@ public class MineX extends Isochrone {
 	private final Map<Integer, Node> nodes;
 
 	public MineX(final ConfigDataset config, final Query query) throws AlgorithmException {
-		super(query);
+		super(config, query);
 
-		initDateCodes();
-		db = new Database<>(config, query.getMode(), query.getDir());
 		nodes = new HashMap<Integer, Node>();
 	}
 
diff --git a/src/main/java/it/unibz/inf/isochrone/algorithm/MrneX.java b/src/main/java/it/unibz/inf/isochrone/algorithm/MrneX.java
index 66c775dbad09ce6a26771a5afafecb2bf99e73c6..d73c018afb7184ce891f923629db14d8dd96ac90 100644
--- a/src/main/java/it/unibz/inf/isochrone/algorithm/MrneX.java
+++ b/src/main/java/it/unibz/inf/isochrone/algorithm/MrneX.java
@@ -1,7 +1,6 @@
 package it.unibz.inf.isochrone.algorithm;
 
 import it.unibz.inf.isochrone.config.ConfigDataset;
-import it.unibz.inf.isochrone.db.Database;
 import it.unibz.inf.isochrone.network.Link;
 import it.unibz.inf.isochrone.network.Node;
 import it.unibz.inf.isochrone.util.DistanceAlgorithm;
@@ -33,10 +32,8 @@ public class MrneX extends Isochrone {
 	}
 
 	public MrneX(final ConfigDataset config, final Query query, final int maxMemorySize) throws AlgorithmException {
-		super(query);
+		super(config, query);
 
-		initDateCodes();
-		db = new Database<>(config, query.getMode(), query.getDir());
 		maxDuration = query.getDuration().intValue();
 		maxMemory = maxMemorySize;
 		nodes = new HashMap<Integer, Node>();