generalize until converges.