merged changes from upstream