public function build($name = null, array $attributes = [], $callback = null)
    {
        if (!$this->validator->isValid($attributes)) {
            throw new Exception\InvalidAttributesException('Invalid validator class');
        }
        unset($attributes['form']);

        $field = new Fluent([
            'name'       => $name,
            'value'      => isset($attributes['value']) ? $attributes['value'] : '',
            'attributes' => $attributes,
        ]);

        if ($callback instanceof Closure) {
            call_user_func($callback, $field);
        }

        $params  = $this->attributes($field);
        $this->extractor->generateScripts($params);
        $this->memorize($field);
        $hiddens = [
            app('form')->hidden('validator', $attributes['validator'])
        ];

        return view($this->config['view'], ['hiddens' => $hiddens, 'element' => app('form')->button($attributes['title'], $params)])->render();
    }