diff --git a/src/Publisher.php b/src/Publisher.php
index 1ee526af9f5995965efeb50177e7a0cb53f4e6ee..9d8432290778bbf2fe203154ecf99921a120ed10 100644
--- a/src/Publisher.php
+++ b/src/Publisher.php
@@ -161,6 +161,10 @@ class Publisher
 
 
 
+
+
+
+
     public function getSections(DOMElement $element): array
     {
         $textNs = $this->getDocument()->getNamespaceUrl('text');
@@ -224,15 +228,16 @@ class Publisher
             'automatic-styles'
         )->item(0);
 
-        $styleNs = $this->getDocument()->getNamespaceUrl('style');
-
-        $stylePageBreak = $this->content->createElementNS($styleNs, 'style:style');
-        $stylePageBreak->setAttributeNS($styleNs, 'style:name', self::PAGE_BREAK_NAME);
-        $stylePageBreak->setAttributeNS($styleNs, 'style:family', 'paragraph');
-        $stylePageBreak->setAttributeNS($styleNs, 'style:parent-style-name', 'Standard');
-
-        $stylePageBreakProperties = $this->content->createElementNS($styleNs, 'style:paragraph-properties');
-        $stylePageBreakProperties->setAttribute('fo:break-after', 'page');
+        $stylePageBreak           = $this->newElement('style:style', [
+            'style:name'              => self::PAGE_BREAK_NAME,
+            'style:family'            => 'paragraph',
+            'style:parent-style-name' => 'Standard',
+            'style:master-page-name'  => 'Standard',
+        ]);
+        $stylePageBreakProperties = $this->newElement('style:paragraph-properties', [
+            'style:writing-mode' => 'page',
+            'style:page-number'  => '1',
+        ]);
 
         $stylePageBreak->appendChild($stylePageBreakProperties);
         $styles->appendChild($stylePageBreak);
@@ -335,9 +340,11 @@ class Publisher
                         $this->setVariable($vElement, $val);
                     }
                 }
-                list($sName, $sType) = explode("@", $name);
-                if ($sType == 'text:section') {
-                    $name = $sName;
+                if (false !== strpos($name, '@')) {
+                    list($sName, $sType) = explode("@", $name);
+                    if ($sType == 'text:section') {
+                        $name = $sName;
+                    }
                 }
                 if (isset($sections[$name])) {
                     foreach ($sections[$name] as $sElement) {
@@ -420,8 +427,10 @@ class Publisher
         $first = true;
         foreach ($this->values as $values) {
             $bodyNode = $this->body->cloneNode(true);
-
-            if (!$first && $this->isAutoBreak()) {
+            if ($first){
+                $this->getDocument()->getStylist()->setVariables($values);
+                $first = false;
+            }elseif($this->isAutoBreak()){
                 $this->addPageBreak($bodyNode);
             }
 
@@ -448,7 +457,7 @@ class Publisher
     {
         $document = $this->getDocument();
 
-        return $document->find($document->getContent(), $name);
+        return $document->find($this->content, $name);
     }
 
 
@@ -477,7 +486,7 @@ class Publisher
     {
         $document = $this->getDocument();
 
-        return $document->newElement($document->getContent(), $name, $attrs);
+        return $document->newElement($this->content, $name, $attrs);
     }
 
 
diff --git a/src/Stylist.php b/src/Stylist.php
index e12d9db49c6adefb55e814934d30836765f2899b..faf7a8cb6465daa1e694c90ba0df9614fa0c9785 100644
--- a/src/Stylist.php
+++ b/src/Stylist.php
@@ -79,6 +79,13 @@ class Stylist
 
 
 
+    /**
+     * @param       $text
+     * @param array $options
+     *
+     * @return Stylist
+     * @throws Exception
+     */
     public function addFiligrane($text, array $options = []): Stylist
     {
         $dw = strlen($text) * 2;
@@ -204,6 +211,80 @@ class Stylist
 
 
 
+    /**
+     * @param DOMElement $element
+     *
+     * @return Publisher
+     * @throws Exception
+     */
+    public function getVariables(): array
+    {
+        $textNs = $this->getDocument()->getNamespaceUrl('text');
+
+        $vElements = $this->find('text:variable-set');
+        foreach ($vElements as $vElement) {
+            $name = $vElement->getAttributeNs($textNs, 'name');
+
+            if (!isset($variables[$name])) $variables[$name] = [];
+            $variables[$name][] = $vElement;
+        }
+
+        return $variables;
+    }
+
+
+
+    /**
+     * @param DOMElement $element
+     * @param string     $value
+     *
+     * @return Publisher
+     */
+    public function setVariable(DOMElement $element, string $value): Stylist
+    {
+        $textNs = $this->getDocument()->getNamespaceUrl('text');
+
+        $document = $element->ownerDocument;
+
+        $value = explode("\n", $value);
+        for ($i = 0; $i < count($value); $i++) {
+            if ($i > 0) {
+                $returnVNode = $document->createElementNS($textNs, 'text:line-break');
+                $element->parentNode->insertBefore($returnVNode, $element);
+            }
+            $vText = $document->createTextNode($value[$i]);
+            $element->parentNode->insertBefore($vText, $element);
+        }
+        $element->parentNode->removeChild($element);
+        $this->getDocument()->setStylesChanged(true);
+
+        return $this;
+    }
+
+
+
+    /**
+     * @param array $variables
+     *
+     * @return Stylist
+     * @throws Exception
+     */
+    public function setVariables(array $variables): Stylist
+    {
+        $vars = $this->getVariables();
+        foreach( $vars as $name => $elements ){
+            if (isset($variables[$name])){
+                foreach( $elements as $element ){
+                    $this->setVariable($element, $variables[$name]);
+                }
+            }
+        }
+
+        return $this;
+    }
+
+
+
     /**
      * @param string $name
      *