add new implement for listener