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 d2af9c871d02dea1e00cb1dea9f0caa84e770fec..c0be9b10fc3e3d584f5162008178023a531585f0 100644
--- a/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
+++ b/src/main/java/it/unibz/inf/isochrone/algorithm/Isochrone.java
@@ -166,25 +166,8 @@ public abstract class Isochrone {
 		qStartNodes.initialize(output);
 
 		Node node = null;
-		NodeConnection cConnections = null;
-		NodeConnection dConnections = null;
 		while ((node = nodeQueue.poll()) != null) {
-			final int nodeId = node.getId();
-
-			final Collection<Link> links = calcAdjLinks(nodeId);
-			output.addNode(node);
-			node.close();
-
-			cConnections = prepareContinuousLinks(node, links);
-			updateNodeQueue(expandContinuousLinks(cConnections));
-
-			dConnections = prepareDiscreteLinks(node, links);
-			updateNodeQueue(expandDiscreteLinks(dConnections));
-
-			output.addLinks(links.stream().filter(PREDICATE_LINK_CONT));
-			if (qIsExpiring && node.isExpired()) {
-				removeNode(nodeId);
-			}
+			expandNode(output, node);
 		}
 
 		output.addNodes(getNodes());
@@ -298,6 +281,25 @@ public abstract class Isochrone {
 		return results;
 	}
 
+	private <T extends AbstractOutput> void expandNode(final T output, final Node node) {
+		final int nodeId = node.getId();
+
+		final Collection<Link> links = calcAdjLinks(nodeId);
+		output.addNode(node);
+		node.close();
+
+		final NodeConnection cConnections = prepareContinuousLinks(node, links);
+		updateNodeQueue(expandContinuousLinks(cConnections));
+
+		final NodeConnection dConnections = prepareDiscreteLinks(node, links);
+		updateNodeQueue(expandDiscreteLinks(dConnections));
+
+		output.addLinks(links.stream().filter(PREDICATE_LINK_CONT));
+		if (qIsExpiring && node.isExpired()) {
+			removeNode(nodeId);
+		}
+	}
+
 	/**
 	 * Gets date codes for a given time.
 	 *