An implementation of a graph data structure