Another overhaul, with too few commits.