three-step iteration