rename
fixed bug
add func