do not merge: cherrypicked 3710f390968e683a0ad3adf0b517dfcade3564ce from master branch
26 files changed