(cherry picked from commit c26cf70c)
(cherry picked from commit ea5b8f6c)
(cherry picked from commit 944c8c39)