It appears to be working!
Refactor so gates don't need an event queue. Make the tests all pass.