Refactor to break up the different types of listneners slightly while
maintaining backwards compatability.