commiting new changes from upstream master