Merge from master branch

All commits between bae7b06c1c02bfc2e733fbd99a637831e5baefce and
4089aff2df5bc1e9fbbb7797aad83dd3142fc85b