merge the mrwinwin's modify
add