merged changes from upstream once again