Add event creation library and implement in scheduler.

I said "should-be-private", not "currently private".