merge changes from upstream