most of the semantics of adding an edge are now handled in the edge