iterative calculations