Merge v2.2.0 from upstream