public function build($id = '', $action = '', $async = true, $fileUpload = false)
    {
        // Set the formID
        $this->formId = ($id ?: 'f' . mt_rand());

        // Build the form
        parent::build($id, $action, $async, $fileUpload);

        // Add extra class
        $this->addClass('form-template');

        // Create form report element
        $this->formReport = $this->getHTMLDocument()->getHTMLFactory()->buildHtmlElement('div', '', '', self::FORM_REPORT_CLASS);
        $this->append($this->formReport);

        // Create form body element
        $this->formBody = $this->getHTMLDocument()->getHTMLFactory()->buildHtmlElement('div', '', '', 'form-body');
        $this->append($this->formBody);

        return $this;
    }