Typically the EventScheduler holds the time and has some methods for scheduling events (e.g. scheduleNow, scheduleDelayed, scheduleAbsolute) as well as canceling events (cancel). Often the EventScheduler also holds the time. Thus the interface roughly looks as follows: {{{ #!cplusplus class EventScheduler { void scheduleNow(Event); void scheduleDelayed(SimTime, Event); void scheduleAbsolute(SimTime, Event); void cancel(Event); SimTime now(); } }}} However, the time need not be part of the EventScheduler. See the EventScheduler in Python sched.scheduler for a nice idea.