iterative problem-solving