Merged from the latest developing branch.