Backout of 7fe2c77ebbf2.
Backout of 0f687f920370
Backout of 987b3ec24f68
Backout of c7ea3c8c8375