Separating responsibilities (seperate edge detector + edge indexer)