public void Accelerate(int delta)
 {
     if (isCarDead && DeadEvent != null)
     {
         CarEventArgs args = new CarEventArgs("May Day!! May Day!!");
         DeadEvent(this, args);
     }
     else
     {
         CurrentSpeed += delta;
         if (10 == (MaxSpeed - CurrentSpeed))
         {
             CriticalEvent(this, new CarEventArgs("Watch out boy!! you are gonna blow up"));
         }
         else if (CurrentSpeed >= MaxSpeed)
         {
             isCarDead = true;
         }
         else
         {
             OkEvent(this, new CarEventArgs("Great Going, boy"));
         }
     }
 }
 //event handler to implement publishers delegate
 public void Display(object car, CarEventArgs args)
 {
     Console.WriteLine("The message is good ==>{0}", args.msg);
 }
 //event handler that implements the publishers delegate
 public void Display(object o, CarEventArgs args)
 {
     Console.WriteLine("Tik,Tik, you are running out of time, please jump off your car ==>{0}", args.msg);
 }
 //event handler method that implements the publishers delegate
 public void Display(object o, CarEventArgs args)
 {
     Console.WriteLine("The car is dead, sorry==>{0}", args.msg);
 }
 //event handler implementing the publishers delegate
 public void Display(object gari, CarEventArgs args)
 {
     Console.WriteLine("This message is critical ==>{0}", args.msg);
 }