Event abstract class