renaming: listener -> handle