Merge from trunk

merge from trunk