modify related functions