implement EventSource and EventBus