iterative update