initial commit, will eventually take place of EventBus