working refactor for listens