upstream merge 2