Account for listenTo/stopListening edge cases, add tests