iterative calculation