Add allEvents() and availableEvents()
Ensure the step() runs until the event queue is clear even for do-nothing events
Add benchmarking code for historical tracking