(cherry picked from commit 7d42b3fa)
(cherry picked from commit 022676ae)
(cherry picked from commit 649371c8)
(cherry picked from commit 3a1545b8)