merge upstream & restructure