Re-sync to upsteam

re-sync latest changes from upstream