issue #5 : support cancel button