re-organized listeners into methods