merge back upstream changes