meet problems
- too many subscribers and publisher
- too many kinds of event
- know all objects
- manage the events from all objects
- propagate event to subscribers