deal with empty
add cancel button