add HandCloseEvent and unify listener