Implement custom event handler system