(cherry picked from commit 70348d31)
(cherry picked from commit 36ce89f6)
(cherry picked from commit b90ab12e)