Merge from upstream/3.0