add a suspend operation for timertask
add cast method
refactor click events