Abstract create_edge as factory like method. Implement remove edge to correctly update successor information. add_edge to utilize both vertices because we want to control when create_edge happens so we don't update successor information too early.