modify more function