Also, should probably be `__invoke`, which allows direct attaching to an EVM, instead of implementing the aggregate listener interface manually in child classes