merging changes from upstream