some data structure changes
new data structure based on edge direction differences instead of nodes (simplifies insert/delete algorithms)