Hammer merge from master.

Needs testing.