implemented some sort of Graph: internally, it uses adjacency lists. The create method DOES return a node object, this is not really required though, as the lists use pairs of ints (target, wheight) to store the information about the graph. So the nodes really are dummys that know about their graph a bit at least. When creating edges the graph therefore can ensure it only connects it's own nodes.