semi-iterative method