move event class implementations to their own package