The interfaces for graph, node and edge must be supported by every implementation. Graphs, nodes and edges must be observable. The ListenerManager handles the communication between the graph, its components and the observers as there can be e.g. different views.