While it looks like this has already been merged, I just wanted to point out that the problem with this approach is that most events pass multiple parameters (like for a model primitive it could be the primitive and information about an articulation that occurred).  By just having  an array like this, you are forcing the events to all have the same signature (or simply not take any parameters).  If that works for how these will be used, I guess it's fine; but if we have use cases where events have parameters, we might want to revisit this.