Added interfaces for event subscribers

Add interfaces for event subscribers and code for calling them.

Requires tests.