diff --git a/modules/intermediate_format/ifweb.xql b/modules/intermediate_format/ifweb.xql
new file mode 100644
index 0000000000000000000000000000000000000000..f7ea31ebc39c4a55b4c89f4035f702cffd7b8034
--- /dev/null
+++ b/modules/intermediate_format/ifweb.xql
@@ -0,0 +1,30 @@
+(:~ 
+ : ifweb.xql offers a simple interface for creating the website specific BdN
+ : intermediate format of a given resource.
+ : 
+ : @author Michelle Rodzis
+ : @version 1.0
+ : 
+ :)
+xquery version "3.1";
+
+module namespace ifweb="http://bdn-edition.de/intermediate_format/ifweb";
+
+declare namespace tei = "http://www.tei-c.org/ns/1.0";
+
+import module namespace pre="http://bdn-edition.de/intermediate_format/preprocessing" at "xmldb:exist:///db/apps/interformat/modules/intermediate_format/preprocessing.xqm";
+import module namespace ident = "http://bdn-edition.de/intermediate_format/identification" at "xmldb:exist:///db/apps/interformat/modules/intermediate_format/identification.xqm";
+import module namespace config = "http://bdn-edition.de/intermediate_format/config" at "xmldb:exist:///db/apps/interformat/modules/config.xqm";
+
+declare option exist:serialize "method=xml media-type=text/xml omit-xml-declaration=no indent=no";
+
+declare function ifweb:main($resource as xs:string) as xs:string? {
+    let $doc := doc($config:sade-data || $resource)
+    let $filename := substring-before($resource, '.xml') || "-if.xml"
+    
+    let $replace-whitespace := false()
+    let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace)
+    let $intermediate-format := ident:walk($preprocessed-data, ())
+    
+    return xmldb:store($config:sade-data, $filename, $intermediate-format)
+};
\ No newline at end of file
diff --git a/modules/intermediate_format/preprocessing.xqm b/modules/intermediate_format/preprocessing.xqm
index 8c85ecae8f7939800d91b54283c86f61683e7ead..f8aa4cdabb0933a4a80433226c0630d480463eab 100644
--- a/modules/intermediate_format/preprocessing.xqm
+++ b/modules/intermediate_format/preprocessing.xqm
@@ -136,7 +136,7 @@ declare function pre:default-element
  : @author Uwe Sikora
  :)
 declare function pre:preprocessing
-    ($nodes as node()*) as item()* {
+    ($nodes as node()*, $replace-whitespace as xs:boolean) as item()* {
 
     for $node in $nodes
     return
@@ -144,7 +144,12 @@ declare function pre:preprocessing
             case processing-instruction() return ()
 
             case text() return (
+              if($replace-whitespace) then (
                 whitespace:text($node, " ")
+              )
+              else (
+                $node
+              )
             )
 
             case comment() return ()
@@ -152,11 +157,11 @@ declare function pre:preprocessing
             case element(TEI) return (
                 element{$node/name()}{
                     $node/@*,
-                    pre:preprocessing($node/node()),
+                    pre:preprocessing($node/node(), $replace-whitespace),
                     element{"editorialNotes"}{
                         for $editorial-note in $node//note[@type eq "editorial-commentary"]
                         return
-                            pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node()) )
+                            pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node(), $replace-whitespace) )
                     }
                 }
             )
@@ -165,10 +170,10 @@ declare function pre:preprocessing
 
             case element(div) return (
                 if ($node[@type = 'section-group']) then (
-                    pre:preprocessing($node/node())
+                    pre:preprocessing($node/node(), $replace-whitespace)
                 )
                 else (
-                    pre:default-element( $node, pre:preprocessing($node/node()) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
                 )
 
             )
@@ -177,7 +182,7 @@ declare function pre:preprocessing
                 element{$node/name()}{
                     $node/@*,
                     attribute {"id"}{ generate-id($node)},
-                    pre:preprocessing($node/node())
+                    pre:preprocessing($node/node(), $replace-whitespace)
                 }
             )
 
@@ -185,13 +190,13 @@ declare function pre:preprocessing
                 element{$node/name()}{
                     $node/@*,
                     attribute {"id"}{ generate-id($node)},
-                    pre:preprocessing($node/node())
+                    pre:preprocessing($node/node(), $replace-whitespace)
                 }
             )
 
             case element(note) return (
                 if ( $node[@type != "editorial-commentary"] or $node[ not(@type) ] ) then (
-                    pre:default-element( $node, pre:preprocessing($node/node()) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
                 ) else ( )
             )
 
@@ -233,11 +238,11 @@ declare function pre:preprocessing
             if($node[@rend = 'right-aligned' or @rend = 'center-aligned']) then(
                     element {'aligned'} {
                         $node/@*,
-                        pre:preprocessing($node/node())
+                        pre:preprocessing($node/node(), $replace-whitespace)
                     }
                 )
                 else (
-                    pre:default-element( $node, pre:preprocessing($node/node()) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
                 )
             )
 
@@ -245,27 +250,27 @@ declare function pre:preprocessing
                 if($node[@type = 'item']) then(
                     element {'item'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node())
+                        pre:preprocessing($node/node(), $replace-whitespace)
                     }
                 )
                 else if($node[@type = 'head']) then(
                     element {'head'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node())
+                        pre:preprocessing($node/node(), $replace-whitespace)
                     }
                 )
                 else if($node[@type = 'row']) then(
                     element {'row'} {
                         $node/@*[name() != 'type'],
-                        pre:preprocessing($node/node())
+                        pre:preprocessing($node/node(), $replace-whitespace)
                     }
                 )
                 else (
-                    pre:default-element( $node, pre:preprocessing($node/node()) )
+                    pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
                 )
             )
 
             default return (
-                pre:default-element( $node, pre:preprocessing($node/node()) )
+                pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
             )
 };
diff --git a/rest/intermediate_format.xql b/rest/intermediate_format.xql
index 4010b36db7764da9cb48236da83c794886b826ab..73b3166e871b95212fc670ce7b12f5a7278530db 100644
--- a/rest/intermediate_format.xql
+++ b/rest/intermediate_format.xql
@@ -13,9 +13,10 @@ declare option exist:serialize "method=xml media-type=text/xml omit-xml-declarat
 declare variable $resource-uri := request:get-parameter("resource", ("/db/apps/interformat/data/samples/samples.xml"));
 declare variable $uri := request:get-parameter("uri", ());
 declare variable $mode := request:get-parameter("mode", ());
+declare variable $replace-whitespace := true();
 
 let $doc := ifutils:get-resource($resource-uri)
-let $preprocessed-data := pre:preprocessing($doc/tei:TEI)
+let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace)
 let $intermediate-format := ident:walk($preprocessed-data, ())
 let $store := if ($mode = "store") then (
         let $filename := concat(replace($resource-uri, '.+/(.+)$', '$1'), ".out")
@@ -26,4 +27,4 @@ let $store := if ($mode = "store") then (
 
 return (
     $intermediate-format
-)
\ No newline at end of file
+)