public function beforeSave(Model $model, $options = array()) {
        $settings = $this->settings[$model->alias];

        if (empty($model->data[$model->alias]) ||
            empty($model->data[$model->alias][$settings['field']]) ||
            !empty($model->data[$model->alias][$settings['slug']])) {
            return true;

        } else if ($model->id && !$settings['onUpdate']) {
            return true;
        }

        $slug = $model->data[$model->alias][$settings['field']];

        if (method_exists($model, 'beforeSlug')) {
            $slug = $model->beforeSlug($slug, $this);
        }

        $slug = $this->slugify($model, $slug);

        if (method_exists($model, 'afterSlug')) {
            $slug = $model->afterSlug($slug, $this);
        }

        if (mb_strlen($slug) > ($settings['length'] - 3)) {
            $slug = mb_substr($slug, 0, ($settings['length'] - 3));
        }

        if ($settings['unique']) {
            $slug = $this->_makeUnique($model, $slug);
        }

        $model->data[$model->alias][$settings['slug']] = $slug;

        return true;
    }