Finished building out the directed graph, but haven't tested it at all. Need to finish figuring out all the required interfaces and add/remove algorithms.