updated changes from upstream