merge the latest change from official fork

sync from the office fork