using closures means its impossible to unsubscribe classes to an event.
eg
cCAGridEvent.subscribe(this.name, poEvent => this.onCAGridEvent(poEvent))
the closure is ephemeral and its not possible to identify the class from it.
what is needed is a standard event handler, which is defined by the event class and implemented in the event subscriber.