description of the algorithm