Iterative algorithm