(cherry picked from commit 5f6912f)
(cherry picked from commit b5c7147)
(cherry picked from commit ce66553)