changes from upstream