Refining the algorithm