根据issue 18进行修改