modify some functions