edges and vertices know about each other and have can_build_on(player_color) methods