merging in latest changes from trunk