Now user can provide a handle_event 

Implemented #8