Move event handling to services