Merge upstream

merge upstream changes from ltc