iterative thinking