Re-based from upstream