impl while
Support listener