Continue work on bug 12859, plus some code cleanup.