updated with convergence results