added draft of Event system