merge upstream to 2.2.1