modified and used in pengyun