refactor(key) listener