generates good convergence results ... while not terribly elegant