merge with trunk.
22 files changed