migrating changes from upstream