modify based on Designer Qianlei's suggestions