public synchronized void makeGraph() {
		// loop through all possible nodes in the overlay, this will be the
		// destination
		// make a vertex
		for (int i = 0; i < overlayNodes.size(); i++) {
			// shortestPaths.add(new
			// ShortestPath(overlayNodes.get(i),sourceNode,links));
			vertices.add(new Vertex(overlayNodes.get(i)));
		}
		// Add the edged
		for (int i = 0; i < links.size(); i++) {
			String delims = " ";
			String[] tokens;
			tokens = links.get(i).split(delims);
			String nodeA = tokens[0];
			String nodeB = tokens[1];
			int weight = Integer.parseInt(tokens[2]);

			for (int j = 0; j < vertices.size(); j++) {
				if (vertices.get(j).getName().equals(nodeA)) {
					// loop through and find nodeb
					for (int k = 0; k < vertices.size(); k++) {
						if (vertices.get(k).getName().equals(nodeB)) {
							vertices.get(j).adjacenies.add(new Edge(vertices
									.get(k), weight));
							vertices.get(k).adjacenies.add(new Edge(vertices
									.get(j), weight));
						}
					}
				}
			}
		}

		// compute all the shortest paths
		this.cachePaths(sourceNode);
	}