revised with display
fixed bug
add new