public function add($content, $level = '', $timeout = 0, $priority = 0, $dismissable = true, $area = '')
    {
        $area = $area ?: is_array($content) && isset($content['area']) ? $content['area'] : $this->workingArea ?: $this->defaultArea;
        $level = $level ?: $this->defaultLevel;

        if (!$this->canView($area)) {
            return $this;
        }

        $content = is_array($content) ? $content : [
            'content'     => $content,
            'level'       => $level,
            'timeout'     => $timeout,
            'priority'    => $priority,
            'dismissable' => $dismissable,
        ];

        if($this->blocker()->isBlocked($content)) {
            return;
        }

        $this->style($area);

        $messages = (array)Session::get($this->id . '.' . $area);

        if($dismissable && !isset($content['dismiss_link'])) {
            $content['dismiss_link'] = singleton('Milkyway\SS\FlashMessage\Controller')->Link('dismiss' . '?' . http_build_query([
                    'area' => $area,
                    'id' => empty($content['id']) ? '' : $content['id'],
                    'content' => empty($content['content']) ? '' : $content['content'],
                ]));
        }

        array_unshift($messages, $content);

        Session::set($this->id . '.' . $area, $messages);

        $this->clearWorking();

        return $this;
    }