iterative procedure