done with heuristic