Rewrite event engine, allow multiple determines

It's also fit for being called as a code event now :D