refactor
add listener warning
refactor