merge from trunk
40 files changed