diff --git a/modules/intermediate_format/ifweb.xql b/modules/intermediate_format/ifweb.xql
index 94dd040b795a93e0c4136b3179ac4f974eb8f132..fc5d53e56c0f8400b629466c08aa2485af175d7e 100644
--- a/modules/intermediate_format/ifweb.xql
+++ b/modules/intermediate_format/ifweb.xql
@@ -19,6 +19,8 @@ import module namespace config = "http://bdn-edition.de/intermediate_format/conf
 
 declare option exist:serialize "method=xml media-type=text/xml omit-xml-declaration=no indent=no";
 
+declare variable $ifweb:replace-whitespace := true();
+declare variable $ifweb:print := false();
 
 declare function ifweb:main($resource as xs:string) as xs:string? {
     let $doc := doc($config:sade-data || $resource)
@@ -30,10 +32,7 @@ declare function ifweb:main($resource as xs:string) as xs:string? {
 
 declare function ifweb:transform($doc as node()*, $filename as xs:string) 
 as node()* {
-    let $replace-whitespace := true()
-    let $log := console:log("Start preprocessing.")
-    let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace)
-    let $log := console:log("Start main processing.")
+    let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $ifweb:replace-whitespace, $ifweb:print)
     let $intermediate-format := ident:walk($preprocessed-data, ())
     let $store := xmldb:store($config:sade-data, $filename, $intermediate-format)
     
@@ -58,4 +57,18 @@ declare function ifweb:single-xml($resource as node()*, $filename as xs:string)
 as node()* {
     let $filename := substring-before($filename, '.xml') || "-if.xml"
     return ifweb:transform($resource, $filename)
-};
\ No newline at end of file
+};
+
+declare function ifweb:transform-split-xml($xml as node()*, $filename as xs:string, 
+$dir as xs:string) {
+    let $preprocessed-data := pre:preprocessing($xml/*, $ifweb:replace-whitespace, $ifweb:print)
+    let $intermediate-format := ident:walk($preprocessed-data, ())
+    let $content := 
+        if(count($intermediate-format) gt 1) then
+            element tei:div {$intermediate-format}
+        else
+            $intermediate-format
+    let $store := xmldb:store($dir, $filename, $content)
+    
+    return $intermediate-format
+};
diff --git a/modules/intermediate_format/preprocessing.xqm b/modules/intermediate_format/preprocessing.xqm
index 97657ba6336652db62ce8f87bf8230307a6331c7..05c831c91fec1c8f807aba5d84105e47ff692cd0 100644
--- a/modules/intermediate_format/preprocessing.xqm
+++ b/modules/intermediate_format/preprocessing.xqm
@@ -140,7 +140,8 @@ declare function pre:default-element
  : @author Uwe Sikora
  :)
 declare function pre:preprocessing
-    ($nodes as node()*, $replace-whitespace as xs:boolean) as item()* {
+    ($nodes as node()*, $replace-whitespace as xs:boolean, $print as xs:boolean) 
+    as item()* {
 
     for $node in $nodes
     return
@@ -161,11 +162,11 @@ declare function pre:preprocessing
             case element(TEI) return (
                 element{$node/name()}{
                     $node/@*,
-                    pre:preprocessing($node/node(), $replace-whitespace),
+                    pre:preprocessing($node/node(), $replace-whitespace, $print),
                     element{"editorial-notes"}{
                         for $editorial-note in $node//note[@type eq "editorial-commentary"]
                         return
-                            pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node(), $replace-whitespace) )
+                            pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node(), $replace-whitespace, $print) )
                     }
                 }
             )
@@ -174,10 +175,10 @@ declare function pre:preprocessing
 
             case element(div) return (
                 if ($node[@type = 'section-group']) then (
-                    pre:preprocessing($node/node(), $replace-whitespace)
+                    pre:preprocessing($node/node(), $replace-whitespace, $print)
                 )
                 else (
-                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) )
                 )
 
             )
@@ -186,7 +187,7 @@ declare function pre:preprocessing
                 element{$node/name()}{
                     $node/@*,
                     attribute {"id"}{ generate-id($node)},
-                    pre:preprocessing($node/node(), $replace-whitespace)
+                    pre:preprocessing($node/node(), $replace-whitespace, $print)
                 }
             )
 
@@ -195,7 +196,7 @@ declare function pre:preprocessing
                 into the critical apparatus. to save time in the internal area
                 of the page we decided to put all counting here and saving it in
                 @app-id instead of doing it on the fly. :)
-                if ($node[@type = ("v", "pp", "pt")]) then ( 
+                if ($node[@type = ("v", "pp", "pt")] and not($print)) then ( 
                     let $current-div-no := 
                         count($node/ancestor::div[1]/preceding::div[@type = "section"])
                         + 1
@@ -218,20 +219,20 @@ declare function pre:preprocessing
                             $node/@*,
                             attribute {"app-id"}{$app-id},
                             attribute {"id"}{ generate-id($node)},
-                            pre:preprocessing($node/node(), $replace-whitespace)
+                            pre:preprocessing($node/node(), $replace-whitespace, $print)
                         }
                 )
                 else
                     element{$node/name()}{
                         $node/@*,
                         attribute {"id"}{ generate-id($node)},
-                        pre:preprocessing($node/node(), $replace-whitespace)
+                        pre:preprocessing($node/node(), $replace-whitespace, $print)
                     }
             )
 
             case element(note) return (
                 if ( $node[@type != "editorial-commentary"] or $node[ not(@type) ] ) then (
-                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) )
                 ) else ( )
             )
 
@@ -273,11 +274,11 @@ declare function pre:preprocessing
             if($node[@rend = 'right-aligned' or @rend = 'center-aligned']) then(
                     element {'aligned'} {
                         $node/@*,
-                        pre:preprocessing($node/node(), $replace-whitespace)
+                        pre:preprocessing($node/node(), $replace-whitespace, $print)
                     }
                 )
                 else (
-                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) )
                 )
             )
 
@@ -285,33 +286,33 @@ declare function pre:preprocessing
                 if($node[@type = 'item']) then(
                     element {'item'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node(), $replace-whitespace)
+                        pre:preprocessing($node/node(), $replace-whitespace, $print)
                     }
                 )
                 else if($node[@type = 'head']) then(
                     element {'head'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node(), $replace-whitespace)
+                        pre:preprocessing($node/node(), $replace-whitespace, $print)
                     }
                 )
                 else if($node[@type = 'row']) then(
                     element {'row'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node(), $replace-whitespace)
+                        pre:preprocessing($node/node(), $replace-whitespace, $print)
                     }
                 )
                 else if($node[@type = 'cell']) then(
                     element {'row'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node(), $replace-whitespace)
+                        pre:preprocessing($node/node(), $replace-whitespace, $print)
                     }
                 )
                 else (
-                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) )
                 )
             )
 
             default return (
-                pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
+                pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) )
             )
 };
diff --git a/rest/intermediate_format.xql b/rest/intermediate_format.xql
index 73b3166e871b95212fc670ce7b12f5a7278530db..b7e6f014feba3b76ed0d522007dbebe6d5b4b4c7 100644
--- a/rest/intermediate_format.xql
+++ b/rest/intermediate_format.xql
@@ -14,9 +14,10 @@ declare variable $resource-uri := request:get-parameter("resource", ("/db/apps/i
 declare variable $uri := request:get-parameter("uri", ());
 declare variable $mode := request:get-parameter("mode", ());
 declare variable $replace-whitespace := true();
+declare variable $print := true();
 
 let $doc := ifutils:get-resource($resource-uri)
-let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace)
+let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace, $print)
 let $intermediate-format := ident:walk($preprocessed-data, ())
 let $store := if ($mode = "store") then (
         let $filename := concat(replace($resource-uri, '.+/(.+)$', '$1'), ".out")