Implementing first two rules
Introduce node abstraction
Introduce vertice abstraction