You don't fill the events properties up. Wouldn't it be a good idea to inject the properties in the abstract event constructor ?