merge upstream changes