Squashed commit of the following: merge fixes back.
commit 2f43738c818545c690728b860da239fe1f69f1d3
commit de766a13231cc89645ff81b11bbd4fd84b8c9224
commit 2f9638f6f48a64254963e72b6eb2be7b32831542
commit 4994f39e675de9a36a262b875ac453ab629c5ad3
commit e72ec3d602b0368eb7aef4e6c64482fa98eef839
commit 36640381d919966dc21dd56007bd46879ca703b8
commit fab26fce847e7417c69771de1d1b0142d81a3dba
Merge: 9852ab6 c60b6d5
commit 9852ab65f23c79f32519f5ac2762778838970a6a
commit c60b6d5409ced55298732a6951ff92ce806587ad
commit 3233d6e579d535d36a5fe0ed65325241def75f2b
commit 281ea3606a3b2838e0adca75003ccb07c4183a49