uses points instead of IDs, added heuristic