Refactor listeners into one, refactor init