This is a graft of a changeset that initially landed on stable, but seems too big a change to happens on stable. So I am backing it out on stable and moving it on default.