public function on($event, $handler, $prepend = false)
   {
      if (!is_string($event)) {
         throw new InvalidArgumentException(
            "invalid value provided for 'event'; ".
            "expecting an event name as string"
         );
      }

      $handler = new Handler($event, $handler);
      if ($prepend === false) {
         $this->eventHandlers[] = $handler;
      }
      else {
         array_unshift($this->eventHandlers, $handler);
      }

      return $this;
   }