Merge from upstream (dev branch)