adding new changes from various pull requests