Manually merged d9e90d7048a3598924f929540702fbf950524af0 from master
Manually merged f669fb3d7a3be5d8e14777531489285dd0d836c4 from master
Manually merged 8339b349b586ea704f9a6e0b4e9321b1264dbeab from master