Changed names
Simplified handling of undirected edges.
Separated edge tests into new protocol