Merge the engine branch into the main trunk. All conflicts resolved.