This looks like a very similar to what AbstractListenerImpl,validateAndAddListenerInvocation does... can we do something to centralize this code?