design pattern eventObj