protected synchronized void addStreet(MapPath newStreet) {
		streets.put(newStreet.getId(), newStreet);

		MapNode lastNode = null;
		for (MapNode node : newStreet.getNodes()) {
			MapNode previous = nodes.put(node.getId(), node);
			if (previous != null && !previous.equals(node)) {
				System.out
						.println("data structure corrupted. unexpected behavior to be exptected now!");

				continue;
			}

			Set<MapNode> neighbors = graph.get(node);

			if (neighbors == null) {
				neighbors = new HashSet<>();
				graph.put(node, neighbors);
			}

			if (lastNode != null) {
				// add left
				neighbors.add(lastNode);
				// add right
				graph.get(lastNode).add(node);
			}

			lastNode = node;
		}
	}