修改部分代码，定制更加灵活