I'm guessing if we try to add an edge with both endpoints the same, weird stuff will happen. Add a catch along with unittests to prevent it