Listener factory method