Use interfaces for event callbacks (Fix #63)