Abstract event manager

sharing event manager API
So why are we declaring the externs here?