merged latest changes from master branch.