public function followLink($next_passage)
    {
        // Check whether that's a valid next passage
        $current = $this->getCurrentPassage();
        $valid_link = false;
        if (is_array($current->links)) {
            foreach ($current->links as $link) {
                if ($link['link'] == $next_passage) {
                    $valid_link = true;
                }
            }
        }

        if ($valid_link && isset($this->passages[$next_passage])) {
            $this->current_passage = $next_passage;
            $this->history[] = $this->current_passage;
            $this->storyline[] = $this->current_passage;

            // Reset the redo history
            if ($this->history_offset != 0) {
                $this->history = array_slice($this->history, 0, -$this->history_offset);
                $this->history_offset = 0;
            }
            return $this->getCurrentPassage();
        }
    }