sync with 2.2.4

see master branch