Merge 2.3.0 updates

Merge the remaining updates from 2.3.0. For fac900a, which we don't actually want to include in 3.0.0, I added a revert commit before merging with the 3.0.0 code.

This is ready to merge at your convenience.