merge the update from Vincent Branch