update($caller); } public function update(SplSubject $caller) { if ( ! ($caller instanceof Event_Subject)) throw new Kohana_Exception('event.invalid_subject', get_class($caller), get_class($this)); $this->caller = $caller; return $this; } public function remove() { $this->caller->detach($this); return $this; } abstract public function notify($message); }