Merged from upstream and rolled into one