diff --git a/content/fop/status.mdtext b/content/fop/status.mdtext
index 1301d2b..f08e513 100644
--- a/content/fop/status.mdtext
+++ b/content/fop/status.mdtext
@@ -5,7 +5,7 @@
 
 ## Status { #Status}
 
-Apache&trade; FOP version {{ fop_current_version }} was released on {{fop_current_version_release_date}}.
+Apache&trade; FOP version {{ fop_current_version }} was released on {{ fop_current_version_release_date }}.
 
 ## Development Status { #Development-Status}
 
diff --git a/lib/path.pm b/lib/path.pm
deleted file mode 100644
index 42c54be..0000000
--- a/lib/path.pm
+++ /dev/null
@@ -1,74 +0,0 @@
-package path;
-
-my %variables = (
-    fop_current_version => "2.5",
-    fop_current_version_release_date => "13 May 2020",
-    fop_minimal_java_requirement => "1.7",
-);
-
-
-# taken from django's url.py
-
-our @patterns = (
-	[ qr!^/batik/.*\.mdtext$!, single_narrative => {
-         header => "batik-top.html",
-         sidenav => "batik-sidenav.mdtext",
-         footer => "bottom.html",
-         template => "single_narrative.html",
-         preprocess => 1,
-         %variables,
-    } ],
-
-	[ qr!^/fop/.*\.mdtext$!, single_narrative => {
-         header => "fop-top.html",
-         sidenav => "fop-sidenav.mdtext",
-         footer => "bottom.html",
-         template => "single_narrative.html",
-         preprocess => 1,
-         %variables,
-    } ],
-
-	[qr!\.mdtext$!, single_narrative => {
-        header => "xgc-top.html",
-        sidenav => "xgc-sidenav.mdtext",
-        footer => "bottom.html",
-        template => "single_narrative.html",
-        preprocess => 1,
-        %variables,
-	} ],
-
-	[qr!/sitemap\.html$!, sitemap => {
-        headers => { title => "Sitemap" },
-        sidenav => "xgc-sidenav.mdtext",
-        footer  => "bottom.html",
-        header  => "xgc-top.html",
-    } ],
-) ;
-
-# for specifying interdependencies between files
-
-our %dependencies = (
-    "/sitemap.html" => [ grep s!^content!!, glob "content/*.mdtext" ],
-);
-
-1;
-
-=head1 LICENSE
-
-           Licensed to the Apache Software Foundation (ASF) under one
-           or more contributor license agreements.  See the NOTICE file
-           distributed with this work for additional information
-           regarding copyright ownership.  The ASF licenses this file
-           to you under the Apache License, Version 2.0 (the
-           "License"); you may not use this file except in compliance
-           with the License.  You may obtain a copy of the License at
-
-             http://www.apache.org/licenses/LICENSE-2.0
-
-           Unless required by applicable law or agreed to in writing,
-           software distributed under the License is distributed on an
-           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-           KIND, either express or implied.  See the License for the
-           specific language governing permissions and limitations
-           under the License.
-
diff --git a/lib/view.pm b/lib/view.pm
deleted file mode 100644
index bb3487e..0000000
--- a/lib/view.pm
+++ /dev/null
@@ -1,22 +0,0 @@
-package view;
-use base 'ASF::View';
-1;
-
-=head1 LICENSE
-
-           Licensed to the Apache Software Foundation (ASF) under one
-           or more contributor license agreements.  See the NOTICE file
-           distributed with this work for additional information
-           regarding copyright ownership.  The ASF licenses this file
-           to you under the Apache License, Version 2.0 (the
-           "License"); you may not use this file except in compliance
-           with the License.  You may obtain a copy of the License at
-
-             http://www.apache.org/licenses/LICENSE-2.0
-
-           Unless required by applicable law or agreed to in writing,
-           software distributed under the License is distributed on an
-           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-           KIND, either express or implied.  See the License for the
-           specific language governing permissions and limitations
-           under the License.
diff --git a/templates/batik-sidenav.mdtext b/templates/batik-sidenav.mdtext
deleted file mode 100644
index 8474630..0000000
--- a/templates/batik-sidenav.mdtext
+++ /dev/null
@@ -1,110 +0,0 @@
-[![Apache XML Graphics Project Logo](/images/apache-xml-graphics.gif "Apache XML Graphics Project")](/)
-
-# Apache Batik
-  - [Overview](/batik/)
-  - [License](/batik/license.html)
-  - [Download](/batik/download.html)
-  - [Notes](/batik/install.html)
-  - [Status](/batik/status.html)
-  - [Demo](/batik/demo-static.html)
-  - [FAQs](/batik/faq.html)
-  - [Batik Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICSBATIK)
-  - [Mailing lists](/batik/mailing-lists.html)
-  - [Contributors](/batik/contributors.html)
-  - [Bug database](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BATIK%20AND%20resolution%20%3D%20Unresolved%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29%20ORDER%20BY%20priority%20DESC)
-  - [Projects using Batik](/batik/uses.html)
-  - ## Batik Tools
-    - [Overview](/batik/tools/)
-    - [Browser](/batik/tools/browser.html)
-    - [Rasterizer](/batik/tools/rasterizer.html)
-    - [Font converter](/batik/tools/font-converter.html)
-    - [Pretty printer](/batik/tools/pretty-printer.html)
-  - ## Using Batik
-    - [Overview](/batik/using/)
-    - [Architecture](/batik/using/architecture.html)
-    - [Javadoc APIs](/batik/javadoc/)
-    - [DOM API](/batik/using/dom-api.html)
-    - [Parsers](/batik/using/parsers.html)
-    - ### Scripting
-      - [Scripting with ECMAScript](/batik/using/scripting/ecmascript.html)
-      - [Scripting with Java](/batik/using/scripting/java.html)
-      - [Scripting with Security](/batik/using/scripting/security.html)
-    - [SVG generator](/batik/using/svg-generator.html)
-    - [Swing components](/batik/using/swing.html)
-    - [Transcoder API](/batik/using/transcoder.html)
-    - [Extending Batik](/batik/using/extending.html)
-  - ## Development
-    - [Overview](/batik/dev/)
-    - [Branches](/batik/dev/branches.html)
-    - [SVG 1.2 support](/batik/dev/svg12.html)
-    - [Test infrastructure](/batik/dev/test.html)
-
-# Apache&trade; XML Graphics
-  - ### Project Overview
-    - [Who We Are](/team.html)
-    - [Legal Stuff](/legal.html)
-    - [Project Charter](/charter.html)
-    - [Mailing Lists](/mail.html)
-    - [Code Repositories](/repo.html)
-    - [ASF Sponsorship Program](https://www.apache.org/foundation/sponsorship.html)
-    - [ASF Thanks](https://www.apache.org/foundation/thanks.html)
-    - [Licenses](https://www.apache.org/licenses/)
-    - [Apache XML Graphics Security](/security.html)
-    - [ASF Security](https://www.apache.org/security/)
-
-# Sub Projects
-  - [Apache FOP](/fop/)
-  - [Apache XML Graphics Commons](/commons/)
-
-## Search Apache XML Graphics
-
-<form name="search" id="search" action="https://www.google.com/search" method="get">
-  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
-  <input type="text" name="q" id="query" />
-  <input type="submit" id="submit" value="Search" />
-</form>
-
-### ApacheCon N. America
-
-<a title="ApacheCon North America" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon North America" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />
-
-  * **[ApacheCon NA](https://www.apachecon.com/)**
-
-Hope to see you there!
-
-### ApacheCon Europe
-
-<a title="ApacheCon Europe" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon Europe" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />
-
-  * **[ApacheCon Europe](https://www.apachecon.com/)**
-
-Hope to see you there!
-
-<a title="Apache Software Foundation" href="https://www.apache.org"><img id="asf_logo_url" alt="Apache Software Foundation " src="/images/asf_logo_url.png" width="200" /></a><br /><br />
-
-<a title="Support the Apache Software Foundation" href="https://donate.apache.org/"><img id="asf_support_url" alt="Support the Apache Software Foundation " src="https://blogs.apache.org/foundation/mediaresource/d67ca611-a57c-462d-ac23-95063f81d175" width="200" /></a>
-
-<script>
-$(document).ready(function () {
-    $('#navigation :header').click(function () {
-        var text = $(this).siblings('ul');
-        if (text.is(':hidden')) {
-            text.slideDown('200');
-        } else {
-            text.slideUp('200');
-        }
-    });
-    if ($('#navigation :header').siblings('ul')) {
-    $('#navigation :header').append(' &raquo;');
-    }
-  $('#navigation > ul > li ul').hide();
-  var str=location.href.toLowerCase();
-  $("#navigation li a").each(function() {
-    if (str.indexOf(this.href.toLowerCase()) > -1) {
-      $(this).parents().slideDown('200');
-       $("li.highlight").removeClass("highlight");
-       $(this).parent().addClass("highlight");
-    }
-  });
-})
-</script>
\ No newline at end of file
diff --git a/templates/batik-top.html b/templates/batik-top.html
deleted file mode 100644
index e276873..0000000
--- a/templates/batik-top.html
+++ /dev/null
@@ -1,11 +0,0 @@
-	<div id="banner">&nbsp;
-	</div>
-
-	<div id="navigation">
-	{% filter markdown %}{% include sidenav %}{% endfilter %}
-	</div>
-
-	<div id="bannertext" style="border-bottom: 2px dashed #666666; height: 100px;">
-	  <a href="/batik/"><img src="/images/apache-batik-logo.png" alt="The Apache FOP Project" width="256" height="96" style="float:left; margin-right: 15px;" /></a>
-	  <h2>The Apache&trade; Batik Project</h2>
-	</div><!-- <h1>{% block tagline %}{{ headers.title }}{% endblock %}</h1> -->{% block content %}
diff --git a/templates/bottom.html b/templates/bottom.html
deleted file mode 100644
index f90d7ba..0000000
--- a/templates/bottom.html
+++ /dev/null
@@ -1,18 +0,0 @@
-	  <div id="footer">
-		<div class="copyright">
-		  <div style="float:left; padding: 7px;">
-			<a title="Apache Software Foundation" href="http://www.apache.org"><img id="asf-feather-logo" alt="Apache Software Foundation" src="/images/asf_logo_url.png" width="200" /></a>
-        </div>
-		  <p>
-			Copyright &copy; 2016 The Apache Software Foundation, Licensed under
-			the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
-			<br />
-			Apache, Apache XML Graphics, Apache FOP, Apache Batik, the Apache feather logo, and the
-			Apache XML Graphics logos are trademarks of <a href="http://www.apache.org">The Apache
-			Software Foundation</a>. All other marks mentioned may be trademarks or registered
-			trademarks of their respective owners.
-			<br />
-		  </p>
-		</div> 
-	  </div>
-	
\ No newline at end of file
diff --git a/templates/fop-sidenav.mdtext b/templates/fop-sidenav.mdtext
deleted file mode 100644
index 862c4ab..0000000
--- a/templates/fop-sidenav.mdtext
+++ /dev/null
@@ -1,390 +0,0 @@
-[![Apache XML Graphics Project Logo](/images/apache-xml-graphics.gif "Apache XML Graphics Project")](/)
-
-# Apache&trade; FOP
-  - [FOP Home](/fop/)
-  - [Download](/fop/download.html)
-  - [Quick Start Guide](/fop/quickstartguide.html)
-  - [Compliance](/fop/compliance.html)
-  - [Getting Help](/fop/gethelp.html)
-  - [FAQs](/fop/faq.html)
-  - [FOP Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP)
-  - [Mailing Lists](/fop/maillist.html)
-  - [License](/fop/license.html)
-  - ## Resources
-    - [XSL-FO](/fop/fo.html)
-    - [Examples](/fop/examples.html)
-    - [Bugs](/fop/bugs.html)
-    - [Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP/FrontPage)
-    - [Other](/fop/resources.html)
-  - ## Project
-    - [News](/fop/news.html)
-    - [Who We Are](/fop/team.html)
-    - [Status](/fop/status.html)
-    - [Known Issues](/fop/knownissues.html)
-    - [Changes](/fop/changes.html)
-  - ## Versions
-      - ## FOP Trunk (dev)
-          - [Overview](/fop/trunk/)
-          - [Upgrading](/fop/trunk/upgrading.html)
-          - ### Using Apache&trade; FOP
-            - [Build](/fop/trunk/compiling.html)
-            - [Configure](/fop/trunk/configuration.html)
-            - [Run](/fop/trunk/running.html)
-            - [Embed](/fop/trunk/embedding.html)
-            - [Servlets](/fop/trunk/servlets.html)
-            - [Ant Task](/fop/trunk/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/trunk/accessibility.html)
-            - [Complex Scripts](/fop/trunk/complexscripts.html)
-            - [Events](/fop/trunk/events.html)
-            - [Extensions](/fop/trunk/extensions.html)
-            - [Fonts](/fop/trunk/fonts.html)
-            - [Graphics](/fop/trunk/graphics.html)
-            - [Hyphenation](/fop/trunk/hyphenation.html)
-            - [Intermediate Format](/fop/trunk/intermediate.html)
-            - [Metadata](/fop/trunk/metadata.html)
-            - [Output Targets](/fop/trunk/output.html)
-            - [PDF/A](/fop/trunk/pdfa.html)
-            - [PDF/X](/fop/trunk/pdfx.html)
-            - [PDF Encryption](/fop/trunk/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/trunk/whitespacemanagement.html)
-      - ## FOP 2.5
-          - [FOP 2.5 Overview](/fop/2.5/)
-          - [Release Notes](/fop/2.5/releaseNotes_2.5.html)
-          - [Changes (2.5)](/fop/2.5/changes_2.5.html)
-          - [Known Issues](/fop/2.5/knownissues_overview.html)
-          - [Upgrading](/fop/2.5/upgrading.html)
-          - ### Using Apache FOP 2.5
-            - [Build](/fop/2.5/compiling.html)
-            - [Configure](/fop/2.5/configuration.html)
-            - [Run](/fop/2.5/running.html)
-            - [Embed](/fop/2.5/embedding.html)
-            - [Servlets](/fop/2.5/servlets.html)
-            - [Ant Task](/fop/2.5/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/2.5/accessibility.html)
-            - [Complex Scripts](/fop/2.5/complexscripts.html)
-            - [Events](/fop/2.5/events.html)
-            - [Extensions](/fop/2.5/extensions.html)
-            - [Fonts](/fop/2.5/fonts.html)
-            - [Graphics](/fop/2.5/graphics.html)
-            - [Hyphenation](/fop/2.5/hyphenation.html)
-            - [Intermediate Format](/fop/2.5/intermediate.html)
-            - [Metadata](/fop/2.5/metadata.html)
-            - [Output Targets](/fop/2.5/output.html)
-            - [PDF/A](/fop/2.5/pdfa.html)
-            - [PDF/X](/fop/2.5/pdfx.html)
-            - [PDF Encryption](/fop/2.5/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/2.5/whitespacemanagement.html)     
-      - ## FOP 2.4
-          - [FOP 2.4 Overview](/fop/2.4/)
-          - [Release Notes](/fop/2.4/releaseNotes_2.4.html)
-          - [Changes (2.4)](/fop/2.4/changes_2.4.html)
-          - [Known Issues](/fop/2.4/knownissues_overview.html)
-          - [Upgrading](/fop/2.4/upgrading.html)
-          - ### Using Apache FOP 2.4
-            - [Build](/fop/2.4/compiling.html)
-            - [Configure](/fop/2.4/configuration.html)
-            - [Run](/fop/2.4/running.html)
-            - [Embed](/fop/2.4/embedding.html)
-            - [Servlets](/fop/2.4/servlets.html)
-            - [Ant Task](/fop/2.4/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/2.4/accessibility.html)
-            - [Complex Scripts](/fop/2.4/complexscripts.html)
-            - [Events](/fop/2.4/events.html)
-            - [Extensions](/fop/2.4/extensions.html)
-            - [Fonts](/fop/2.4/fonts.html)
-            - [Graphics](/fop/2.4/graphics.html)
-            - [Hyphenation](/fop/2.4/hyphenation.html)
-            - [Intermediate Format](/fop/2.4/intermediate.html)
-            - [Metadata](/fop/2.4/metadata.html)
-            - [Output Targets](/fop/2.4/output.html)
-            - [PDF/A](/fop/2.4/pdfa.html)
-            - [PDF/X](/fop/2.4/pdfx.html)
-            - [PDF Encryption](/fop/2.4/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/2.4/whitespacemanagement.html)             
-      - ## FOP 2.3
-          - [FOP 2.3 Overview](/fop/2.3/)
-          - [Release Notes](/fop/2.3/releaseNotes_2.3.html)
-          - [Changes (2.3)](/fop/2.3/changes_2.3.html)
-          - [Known Issues](/fop/2.3/knownissues_overview.html)
-          - [Upgrading](/fop/2.3/upgrading.html)
-          - ### Using Apache FOP 2.3
-            - [Build](/fop/2.3/compiling.html)
-            - [Configure](/fop/2.3/configuration.html)
-            - [Run](/fop/2.3/running.html)
-            - [Embed](/fop/2.3/embedding.html)
-            - [Servlets](/fop/2.3/servlets.html)
-            - [Ant Task](/fop/2.3/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/2.3/accessibility.html)
-            - [Complex Scripts](/fop/2.3/complexscripts.html)
-            - [Events](/fop/2.3/events.html)
-            - [Extensions](/fop/2.3/extensions.html)
-            - [Fonts](/fop/2.3/fonts.html)
-            - [Graphics](/fop/2.3/graphics.html)
-            - [Hyphenation](/fop/2.3/hyphenation.html)
-            - [Intermediate Format](/fop/2.3/intermediate.html)
-            - [Metadata](/fop/2.3/metadata.html)
-            - [Output Targets](/fop/2.3/output.html)
-            - [PDF/A](/fop/2.3/pdfa.html)
-            - [PDF/X](/fop/2.3/pdfx.html)
-            - [PDF Encryption](/fop/2.3/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/2.3/whitespacemanagement.html)            
-      - ## FOP 2.2
-          - [FOP 2.2 Overview](/fop/2.2/)
-          - [Release Notes](/fop/2.2/releaseNotes_2.2.html)
-          - [Changes (2.2)](/fop/2.2/changes_2.2.html)
-          - [Known Issues](/fop/2.2/knownissues_overview.html)
-          - [Upgrading](/fop/2.2/upgrading.html)
-          - ### Using Apache FOP 2.2
-            - [Build](/fop/2.2/compiling.html)
-            - [Configure](/fop/2.2/configuration.html)
-            - [Run](/fop/2.2/running.html)
-            - [Embed](/fop/2.2/embedding.html)
-            - [Servlets](/fop/2.2/servlets.html)
-            - [Ant Task](/fop/2.2/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/2.2/accessibility.html)
-            - [Complex Scripts](/fop/2.2/complexscripts.html)
-            - [Events](/fop/2.2/events.html)
-            - [Extensions](/fop/2.2/extensions.html)
-            - [Fonts](/fop/2.2/fonts.html)
-            - [Graphics](/fop/2.2/graphics.html)
-            - [Hyphenation](/fop/2.2/hyphenation.html)
-            - [Intermediate Format](/fop/2.2/intermediate.html)
-            - [Metadata](/fop/2.2/metadata.html)
-            - [Output Targets](/fop/2.2/output.html)
-            - [PDF/A](/fop/2.2/pdfa.html)
-            - [PDF/X](/fop/2.2/pdfx.html)
-            - [PDF Encryption](/fop/2.2/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/2.2/whitespacemanagement.html)
-      - ## FOP 2.1
-          - [FOP 2.1 Overview](/fop/2.1/)
-          - [Release Notes](/fop/2.1/releaseNotes_2.1.html)
-          - [Changes (2.1)](/fop/2.1/changes_2.1.html)
-          - [Known Issues](/fop/2.1/knownissues_overview.html)
-          - [Upgrading](/fop/2.1/upgrading.html)
-          - ### Using Apache FOP 2.1
-            - [Build](/fop/2.1/compiling.html)
-            - [Configure](/fop/2.1/configuration.html)
-            - [Run](/fop/2.1/running.html)
-            - [Embed](/fop/2.1/embedding.html)
-            - [Servlets](/fop/2.1/servlets.html)
-            - [Ant Task](/fop/2.1/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/2.1/accessibility.html)
-            - [Complex Scripts](/fop/2.1/complexscripts.html)
-            - [Events](/fop/2.1/events.html)
-            - [Extensions](/fop/2.1/extensions.html)
-            - [Fonts](/fop/2.1/fonts.html)
-            - [Graphics](/fop/2.1/graphics.html)
-            - [Hyphenation](/fop/2.1/hyphenation.html)
-            - [Intermediate Format](/fop/2.1/intermediate.html)
-            - [Metadata](/fop/2.1/metadata.html)
-            - [Output Targets](/fop/2.1/output.html)
-            - [PDF/A](/fop/2.1/pdfa.html)
-            - [PDF/X](/fop/2.1/pdfx.html)
-            - [PDF Encryption](/fop/2.1/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/2.1/whitespacemanagement.html)
-      - ## FOP 2.0
-          - [FOP 2.0 Overview](/fop/2.0/)
-          - [Release Notes](/fop/2.0/releaseNotes_2.0.html)
-          - [Changes (2.0)](/fop/2.0/changes_2.0.html)
-          - [Known Issues](/fop/2.0/knownissues_overview.html)
-          - [Upgrading](/fop/2.0/upgrading.html)
-          - ### Using Apache FOP 2.0
-            - [Build](/fop/2.0/compiling.html)
-            - [Configure](/fop/2.0/configuration.html)
-            - [Run](/fop/2.0/running.html)
-            - [Embed](/fop/2.0/embedding.html)
-            - [Servlets](/fop/2.0/servlets.html)
-            - [Ant Task](/fop/2.0/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/2.0/accessibility.html)
-            - [Complex Scripts](/fop/2.0/complexscripts.html)
-            - [Events](/fop/2.0/events.html)
-            - [Extensions](/fop/2.0/extensions.html)
-            - [Fonts](/fop/2.0/fonts.html)
-            - [Graphics](/fop/2.0/graphics.html)
-            - [Hyphenation](/fop/2.0/hyphenation.html)
-            - [Intermediate Format](/fop/2.0/intermediate.html)
-            - [Metadata](/fop/2.0/metadata.html)
-            - [Output Targets](/fop/2.0/output.html)
-            - [PDF/A](/fop/2.0/pdfa.html)
-            - [PDF/X](/fop/2.0/pdfx.html)
-            - [PDF Encryption](/fop/2.0/pdfencryption.html)
-            - [PDF Images](/fop/fop-pdf-images.html)
-            - [Whitespace Management](/fop/2.0/whitespacemanagement.html)
-      - ## FOP 1.1
-          - [FOP 1.1 Overview](/fop/1.1/)
-          - [Release Notes](/fop/1.1/releaseNotes_1.1.html)
-          - [Changes (1.1)](/fop/1.1/changes_1.1.html)
-          - [Known Issues](/fop/1.1/knownissues_overview.html)
-          - [Upgrading](/fop/1.1/upgrading.html)
-          - ### Using Apache FOP 1.1
-            - [Build](/fop/1.1/compiling.html)
-            - [Configure](/fop/1.1/configuration.html)
-            - [Run](/fop/1.1/running.html)
-            - [Embed](/fop/1.1/embedding.html)
-            - [Servlets](/fop/1.1/servlets.html)
-            - [Ant Task](/fop/1.1/anttask.html)
-          - ### Features
-            - [Accessibility](/fop/1.1/accessibility.html)
-            - [Complex Scripts](/fop/1.1/complexscripts.html)
-            - [Events](/fop/1.1/events.html)
-            - [Extensions](/fop/1.1/extensions.html)
-            - [Fonts](/fop/1.1/fonts.html)
-            - [Graphics](/fop/1.1/graphics.html)
-            - [Hyphenation](/fop/1.1/hyphenation.html)
-            - [Intermediate Format](/fop/1.1/intermediate.html)
-            - [Metadata](/fop/1.1/metadata.html)
-            - [Output Targets](/fop/1.1/output.html)
-            - [PDF/A](/fop/1.1/pdfa.html)
-            - [PDF/X](/fop/1.1/pdfx.html)
-            - [PDF Encryption](/fop/1.1/pdfencryption.html)
-      - ## FOP 1.0
-          - [FOP 1.0 Overview](/fop/1.0/)
-          - [Release Notes](/fop/1.0/releaseNotes_1.0.html)
-          - [Changes (1.0)](/fop/1.0/changes_1.0.html)
-          - [Known Issues](/fop/1.0/knownissues_overview.html)
-          - [Upgrading](/fop/1.0/upgrading.html)
-          - ### Using Apache FOP 1.0
-            - [Build](/fop/1.0/compiling.html)
-            - [Configure](/fop/1.0/configuration.html)
-            - [Run](/fop/1.0/running.html)
-            - [Embed](/fop/1.0/embedding.html)
-            - [Servlets](/fop/1.0/servlets.html)
-            - [Ant Task](/fop/1.0/anttask.html)
-          - ### Features
-            - [Output Targets](/fop/1.0/output.html)
-            - [Intermediate Format](/fop/1.0/intermediate.html)
-            - [PDF Encryption](/fop/1.0/pdfencryption.html)
-            - [PDF/A](/fop/1.0/pdfa.html)
-            - [PDF/X](/fop/1.0/pdfx.html)
-            - [Graphics](/fop/1.0/graphics.html)
-            - [Fonts](/fop/1.0/fonts.html)
-            - [Hyphenation](/fop/1.0/hyphenation.html)
-            - [Extensions](/fop/1.0/extensions.html)
-            - [Events](/fop/1.0/events.html)
-            - [Metadata](/fop/1.0/metadata.html)
-            - [Accessibility](/fop/1.0/accessibility.html)
-      - ## FOP Development
-          - [General Info](/fop/dev/)
-          - ## Design
-            - [Design Info](/fop/dev/design/)
-          - ## Core Process
-            - [Startup](/fop/dev/design/startup.html)
-            - [XML Parsing](/fop/dev/design/parsing.html)
-            - [FO Tree](/fop/dev/design/fotree.html)
-            - [Properties](/fop/dev/design/properties.html)
-            - [Layout](/fop/dev/design/layout.html)
-            - [Break Possibility](/fop/dev/design/breakpos.html)
-            - [Area Tree](/fop/dev/design/areas.html)
-            - [Renderers](/fop/dev/design/renderers.html)
-          - ## Miscellaneous
-            - [Images](/fop/dev/design/images.html)
-            - [PDF Library](/fop/dev/design/pdf-library.html)
-            - [SVG](/fop/dev/design/svg.html)
-            - [Embedding](/fop/dev/design/embedding.html)
-            - [Extending](/fop/dev/design/extending.html)
-            - [Optimisations](/fop/dev/design/optimise.html)
-            - [User Agent](/fop/dev/design/useragent.html)
-          - [Unresolved (Wiki)](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP/FOPProjectPages)
-          - [SVG](/fop/dev/svg.html)
-          - [Extensions](/fop/dev/extensions.html)
-          - ## Develop
-            - [Walk-Thru](/fop/dev/implement.html)
-            - [Patch Queue](https://issues.apache.org/jira/issues/?jql=project%20%3D%20FOP%20AND%20description%20~%20%22\%22[patch]\%22%22%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29)
-            - [Conventions](/fop/dev/conventions.html)
-          - ## Test
-            - [Testing](/fop/dev/testing.html)
-          - ## Deploy
-            - [Doc Mgmt](/fop/dev/doc.html)
-            - [Release](/fop/dev/release.html)
-            - [Bugs](https://issues.apache.org/jira/issues/?jql=project%20%3D%20FOP%20AND%20issuetype%20%3D%20Bug%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29)
-          - ## Resources
-            - [FAQs](/fop/dev/faq.html)
-            - [Tools](/fop/dev/tools.html)
-            - [ViewVC](http://svn.apache.org/viewvc/xmlgraphics/fop)
-          - ## SubPackages
-            - [RTFlib](/fop/dev/rtflib.html)
-
-# Apache&trade; XML Graphics
-  - ## Project Overview
-    - [Who We Are](/team.html)
-    - [Legal Stuff](/legal.html)
-    - [Project Charter](/charter.html)
-    - [Mailing Lists](/mail.html)
-    - [Code Repositories](/repo.html)
-    - [ASF Sponsorship Program](https://www.apache.org/foundation/sponsorship.html)
-    - [ASF Thanks](https://www.apache.org/foundation/thanks.html)
-    - [Licenses](https://www.apache.org/licenses/)
-    - [Apache XML Graphics Security](/security.html)
-    - [ASF Security](https://www.apache.org/security/)
-
-# Sub Projects
-  - [Apache Batik](/batik/)
-  - [Apache XML Graphics Commons](/commons/)
-
-### Search Apache XML Graphics
-
-<form name="search" id="search" action="https://www.google.com/search" method="get">
-  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
-  <input type="text" name="q" id="query" />
-  <input type="submit" id="submit" value="Search" />
-</form>
-
-### ApacheCon N. America
-
-<a title="ApacheCon North America" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon North America" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />
-
-  * **[ApacheCon NA](https://www.apachecon.com/)**
-
-Hope to see you there!
-
-### ApacheCon Europe
-
-<a title="ApacheCon Europe" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon Europe" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />
-
-  * **[ApacheCon Europe](https://www.apachecon.com/)**
-
-Hope to see you there!
-
-<a title="Apache Software Foundation" href="https://www.apache.org"><img id="asf_logo_url" alt="Apache Software Foundation " src="/images/asf_logo_url.png" width="200" /></a><br /><br />
-
-<a title="Support the Apache Software Foundation" href="https://donate.apache.org/"><img id="asf_support_url" alt="Support the Apache Software Foundation " src="https://blogs.apache.org/foundation/mediaresource/d67ca611-a57c-462d-ac23-95063f81d175" width="200" /></a>
-
-<script>
-$(document).ready(function () {
-    $('#navigation :header').click(function () {
-        var text = $(this).siblings('ul');
-        if (text.is(':hidden')) {
-            text.slideDown('200');
-        } else {
-            text.slideUp('200');
-        }
-    });
-    if ($('#navigation :header').siblings('ul')) {
-      $('#navigation :header').not('#search-apache-xml-graphics, #apachewzxhzdk3-xml-graphics, #sub-projects').append(' &raquo;');
-    }
-  $('#navigation > ul > li > ul > li ul').hide();
-  $('#project-overview').next().hide();
-  $('#versions').next().show();
-  var str=location.href.toLowerCase();
-  $("#navigation li a").each(function() {
-    if (str.indexOf(this.href.toLowerCase()) > -1) {
-      $(this).parents().slideDown('200');
-      $("li.highlight").removeClass("highlight");
-      $(this).parent().addClass("highlight");
-    }
-  });
-})
-</script>
\ No newline at end of file
diff --git a/templates/fop-top.html b/templates/fop-top.html
deleted file mode 100644
index 8740172..0000000
--- a/templates/fop-top.html
+++ /dev/null
@@ -1,11 +0,0 @@
-	<div id="banner">&nbsp;
-	</div>
-
-	<div id="navigation">
-	{% filter markdown %}{% include sidenav %}{% endfilter %}
-	</div>
-
-	<div id="bannertext" style="border-bottom: 2px dashed #666666; height: 70px;">
-	  <a href="/fop/"><img src="/images/apache-fop-logo.jpg" alt="The Apache FOP Project" width="120" height="65" style="float:left; margin-right: 15px;" /></a>
-	  <h2>The Apache&trade; FOP Project</h2>
-	</div><!-- <h1>{% block tagline %}{{ headers.title }}{% endblock %}</h1> -->{% block content %}
diff --git a/templates/sidenav.mdtext b/templates/sidenav.mdtext
deleted file mode 100644
index 1ab6780..0000000
--- a/templates/sidenav.mdtext
+++ /dev/null
@@ -1,237 +0,0 @@
-[![Apache XML Graphics Project Logo](/images/apache-xml-graphics.gif "Apache XML Graphics Project")](/)
-
-# Apache&trade; XML Graphics
-  - ### Project Overview
-    - [Who We Are](/team.html)
-    - [Legal Stuff](/legal.html)
-    - [Project Charter](/charter.html)
-    - [Mailing Lists](/mail.html)
-    - [XML Graphics Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICS)
-    - [Code Repositories](/repo.html)
-    - [ASF Sponsorship Program](https://www.apache.org/foundation/sponsorship.html)
-    - [ASF Thanks](https://www.apache.org/foundation/thanks.html)
-    - [Licenses](https://www.apache.org/licenses/)
-    - [Security](https://www.apache.org/security/)
-
-# Sub Projects
-  - # Apache Batik
-    - [Overview](/batik/)
-    - [License](/batik/license.html)
-    - [Download](/batik/download.cgi)
-    - [Installation notes](/batik/install.html)
-    - [Status](/batik/status.html)
-    - [Demo](/batik/demo.html)
-    - [FAQs](/batik/faq.html)
-    - [Mailing lists](/batik/mailing-lists.html)
-    - [Contributors](/batik/contributors.html)
-    - [Bug database](http://issues.apache.org/bugzilla/buglist.cgi?query_format=specific&amp;bug_status=__open__&amp;product=Batik)
-    - [Projects using Batik](/batik/uses.html)
-    - ## Batik Tools
-        - [Browser](/batik/tools/browser.html)
-        - [Rasterizer](/batik/tools/rasterizer.html)
-        - [Font converter](/batik/tools/font-converter.html)
-        - [Pretty printer](/batik/tools/pretty-printer.html)
-    - ## Using Batik
-      - [Architecture](/batik/using/architecture.html)
-      - [Javadoc APIs](/batik/javadoc/)
-      - [DOM API](/batik/using/dom-api.html)
-      - [Parsers](/batik/using/parsers.html)
-      - ### Scripting
-        - [Scripting with ECMAScript](/batik/using/scripting/ecmascript.html)
-        - [Scripting with Java](/batik/using/scripting/java.html)
-        - [Security](/batik/using/scripting/security.html)
-      - [SVG generator](/batik/using/svg-generator.html)
-      - [Swing components](/batik/using/swing.html)
-      - [Transcoder API](/batik/using/transcoder.html)
-      - [Extending Batik](/batik/using/extending.html)
-    - ## Development
-      - [Branches](/batik/dev/branches.html)
-      - [SVG 1.2 support](/batik/dev/svg12.html)
-      - [Test infrastructure](/batik/dev/test.html)
-  - # Apache FOP
-    - [FOP Home](/fop/)
-    - [Download](/fop/download.html)
-    - [Quick Start Guide](/fop/quickstartguide.html)
-    - [Compliance](/fop/compliance.html)
-    - [Getting Help](/fop/gethelp.html)
-    - [FAQs](/fop/faq.html)
-    - [Mailing Lists](/fop/maillist.html)
-    - [License](/fop/license.html)
-    - ## Resources
-      - [XSL-FO](/fop/fo.html)
-      - [Examples](/fop/examples.html)
-      - [Bugs](/fop/bugs.html)
-      - [Wiki](/fop/https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP/FrontPage)
-      - [Other](/fop/resources.html)
-    - ## Project
-      - [News](/fop/news.html)
-      - [Who We Are](/fop/team.html)
-      - [Status](/fop/status.html)
-      - [Known Issues](/fop/knownissues.html)
-      - [Changes](/fop/changes.html)
-    - ## Branches
-      - ## Apache&trade; FOP Trunk (dev)
-        - [Upgrading](/fop/trunk/upgrading.html)
-        - ### Using Apache&trade; FOP
-          - [Build](/fop/trunk/compiling.html)
-          - [Configure](/fop/trunk/configuration.html)
-          - [Run](/fop/trunk/running.html)
-          - [Embed](/fop/trunk/embedding.html)
-          - [Servlets](/fop/trunk/servlets.html)
-          - [Ant Task](/fop/trunk/anttask.html)
-        - ### Features
-          - [Accessibility](/fop/trunk/accessibility.html)
-          - [Complex Scripts](/fop/trunk/complexscripts.html)
-          - [Events](/fop/trunk/events.html)
-          - [Extensions](/fop/trunk/extensions.html)
-          - [Fonts](/fop/trunk/fonts.html)
-          - [Graphics](/fop/trunk/graphics.html)
-          - [Hyphenation](/fop/trunk/hyphenation.html)
-          - [Intermediate Format](/fop/trunk/intermediate.html)
-          - [Metadata](/fop/trunk/metadata.html)
-          - [Output Targets](/fop/trunk/output.html)
-          - [PDF/A](/fop/trunk/pdfa.html)
-          - [PDF/X](/fop/trunk/pdfx.html)
-          - [PDF Encryption](/fop/trunk/pdfencryption.html)
-      - ## Apache&trade; FOP 1.0
-        - [FOP 1.0 Overview](/fop/1.0/)
-        - [Release Notes](/fop/1.0/releaseNotes_1.0.html)
-        - [Changes (1.0)](/fop/1.0/changes_1.0.html)
-        - [Known Issues](/fop/1.0/knownissues_overview.html)
-        - [Upgrading](/fop/1.0/upgrading.html)
-        - ### Using Apache FOP 1.0
-          - [Build](/fop/1.0/compiling.html)
-          - [Configure](/fop/1.0/configuration.html)
-          - [Run](/fop/1.0/running.html)
-          - [Embed](/fop/1.0/embedding.html)
-          - [Servlets](/fop/1.0/servlets.html)
-          - [Ant Task](/fop/1.0/anttask.html)
-        - ### Features
-          - [Output Targets](/fop/1.0/output.html)
-          - [Intermediate Format](/fop/1.0/intermediate.html)
-          - [PDF Encryption](/fop/1.0/pdfencryption.html)
-          - [PDF/A](/fop/1.0/pdfa.html)
-          - [PDF/X](/fop/1.0/pdfx.html)
-          - [Graphics](/fop/1.0/graphics.html)
-          - [Fonts](/fop/1.0/fonts.html)
-          - [Hyphenation](/fop/1.0/hyphenation.html)
-          - [Extensions](/fop/1.0/extensions.html)
-          - [Events](/fop/1.0/events.html)
-          - [Metadata](/fop/1.0/metadata.html)
-          - [Accessibility](/fop/1.0/accessibility.html)
-      - ## Apache&trade; FOP 0.95
-        - [FOP 0.95 Overview](/fop/0.95/)
-        - [Release Notes](/fop/0.95/releaseNotes_0.95.html)
-        - [Changes (0.95)](/fop/0.95/changes_0.95.html)
-        - [Changes (0.95beta)](/fop/0.95/changes_0.95beta.html)
-        - [Known Issues](/fop/0.95/knownissues_overview.html)
-        - [Upgrading](/fop/0.95/upgrading.html)
-        - ### Using Apache FOP 0.95
-          - [Build](/fop/0.95/compiling.html)
-          - [Configure](/fop/0.95/configuration.html)
-          - [Run](/fop/0.95/running.html)
-          - [Embed](/fop/0.95/embedding.html)
-          - [Servlets](/fop/0.95/servlets.html)
-          - [Ant Task](/fop/0.95/anttask.html)
-        - ### Features
-          - [Output Targets](/fop/0.95/output.html)
-          - [Intermediate Format](/fop/0.95/intermediate.html)
-          - [PDF Encryption](/fop/0.95/pdfencryption.html)
-          - [PDF/A](/fop/0.95/pdfa.html)
-          - [PDF/X](/fop/0.95/pdfx.html)
-          - [Graphics](/fop/0.95/graphics.html)
-          - [Fonts](/fop/0.95/fonts.html)
-          - [Hyphenation](/fop/0.95/hyphenation.html)
-          - [Extensions](/fop/0.95/extensions.html)
-          - [Metadata](/fop/0.95/metadata.html)
-      - # Apache&trade; FOP Development
-        - [General Info](/fop/dev/)
-        - ## Design
-          - [Design Info](/fop/dev/design/)
-        - ## Core Process
-          - [Startup](/fop/dev/design/startup.html)
-          - [XML Parsing](/fop/dev/design/parsing.html)
-          - [FO Tree](/fop/dev/design/fotree.html)
-          - [Properties](/fop/dev/design/properties.html)
-          - [Layout](/fop/dev/design/layout.html)
-          - [Break Possibility](/fop/dev/design/breakpos.html)
-          - [Area Tree](/fop/dev/design/areas.html)
-          - [Renderers](/fop/dev/design/renderers.html)
-        - ## Miscellaneous
-          - [Images](/fop/dev/design/images.html)
-          - [PDF Library](/fop/dev/design/pdf-library.html)
-          - [SVG](/fop/dev/design/svg.html)
-          - [Embedding](/fop/dev/design/embedding.html)
-          - [Extending](/fop/dev/design/extending.html)
-          - [Optimisations](/fop/dev/design/optimise.html)
-          - [User Agent](/fop/dev/design/useragent.html)
-        - [Unresolved (Wiki)](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP/FOPProjectPages)
-        - [SVG](/fop/dev/svg.html)
-        - [Extensions](/fop/dev/extensions.html)
-        - ## Develop
-          - [Walk-Thru](/fop/dev/implement.html)
-          - [Patch Queue](https://issues.apache.org/jira/issues/?jql=project%20%3D%20FOP%20AND%20description%20~%20%22\%22[patch]\%22%22%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29)
-          - [Conventions](/fop/dev/conventions.html)
-        - ## Test
-          - [Testing](/fop/dev/testing.html)
-        - ## Deploy
-          - [Doc Mgmt](/fop/dev/doc.html)
-          - [Release](/fop/dev/release.html)
-          - [Bugs](https://issues.apache.org/jira/issues/?jql=project%20%3D%20FOP%20AND%20issuetype%20%3D%20Bug%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29)
-        - ## Resources
-          - [FAQs](/fop/dev/faq.html)
-          - [Tools](/fop/dev/tools.html)
-          - [ViewVC](http://svn.apache.org/viewvc/xmlgraphics/fop)
-        - ## SubPackages
-          - [RTFlib](/fop/dev/rtflib.html)
-  - # XML Graphics Commons
-    - [Overview](/commons/)
-    - [Download](/commons/download.html)
-    - ## Documentation
-      - [Tools for Adobe PostScript](/commons/postscript.html)
-      - [Image Loader Framework](/commons/image-loader.html)
-    - ## Information
-      - [Mailing Lists](/mail.html)
-      - [Code Repositories](/repo.html)
-      - [Changes](c/commons/hanges.html)
-      - [Bugs](/commons/bugs.html)
-
-<a title="Apache Software Foundation" href="https://www.apache.org"><img id="asf_logo_url" alt="Apache Software Foundation " src="/images/asf_logo_url.png" width="200" /></a><br /><br />
-
-<a title="Support the Apache Software Foundation" href="https://donate.apache.org/"><img id="asf_support_url" alt="Support the Apache Software Foundation " src="https://blogs.apache.org/foundation/mediaresource/d67ca611-a57c-462d-ac23-95063f81d175" width="200" /></a>
-
-## Search Apache XML Graphics
-<form name="search" id="search" action="https://www.google.com/search" method="get">
-  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
-  <input type="text" name="q" id="query" />
-  <input type="submit" id="submit" value="Search" />
-</form>
-
-<style type="text/css">
-.highlight {color: red;}
-</style>
-
-<script type="text/javascript">
-$(document).ready(function () {
-    $('#navigation :header').click(function () {
-        var text = $(this).siblings('ul');
-        if (text.is(':hidden')) {
-            text.slideDown('200');
-        } else {
-            text.slideUp('200');
-        }
-    });
-    if ($('#navigation :header').siblings('ul')) {
-    $('#navigation :header').append(' &raquo;');
-    }
-  $('#navigation > ul > li > ul').hide();
-  var str=location.href.toLowerCase();
-  $("#navigation li a").each(function() {
-    if (str.indexOf(this.href.toLowerCase()) > -1) {
-      $(this).parents().slideDown('200');
-       $("li.highlight").removeClass("highlight");
-       $(this).parent().addClass("highlight");
-    }
-  });
-})
-</script>
\ No newline at end of file
diff --git a/templates/single_narrative.html b/templates/single_narrative.html
deleted file mode 100644
index 19d6b98..0000000
--- a/templates/single_narrative.html
+++ /dev/null
@@ -1 +0,0 @@
-{% extends "skeleton.html" %}
diff --git a/templates/skeleton.html b/templates/skeleton.html
deleted file mode 100644
index 856bf4d..0000000
--- a/templates/skeleton.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <title>{% block title %}{{ headers.title }}{% endblock %}</title>
-
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />
-<!--
-    <link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/style.css">
--->
-    <link rel="stylesheet" type="text/css" media="screen" href="//www.apache.org/css/code.css">
-    <link href="/css/profile.css" rel="stylesheet" type="text/css" />
-    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css" />
-    <link href="/css/print.css" rel="stylesheet" type="text/css" media="print" />
-
-    <script src="//code.jquery.com/jquery.min.js"></script>
-	<script type="text/javascript" src="/js/jquery.stoc.js"></script>
-    <script>
-    $(document).ready(function(){
-        $('ul#navigation a').each(function() {
-		    if (this.href === window.location.href)
-			    { $(this). attr('id', 'forefront');} 
-        });
-        $('ul#navigation a#forefront').each(function() {
-        	
-        });
-    })
-	$(function(){
-		$("#items").stoc({ search: "#content", stocTitle: "<h3>Page Contents</h3>" });
-	});
-    </script>
-
-    {% if headers.atom %}
-      <link rel="alternate" href="{{ headers.atom.url }}"
-            type="application/atom+xml" title="{{ headers.atom.title }}" />
-    {% endif %}
-
-    {% if headers.base %}<base href="{{ headers.base }}" />{% endif %}
-    {% if headers.notice %}<!-- {{ headers.notice }} -->{% endif %}
-	<style>
-	.highlight {color: red;}
-	</style>
-
-  </head>
-
-  <body>
-
-{% include header %}
-
-      {% block content %}
-      <div id="content" class="grid_16">
-        <div id="items">
-        </div>
-      	<!-- <div id="breadcrumb">{{ breadcrumbs|safe }}</div> -->
-      	<div class="section-content">{{ content|markdown }}</div>
-      </div>
-      {% endblock %}
-      <div class="clear"></div>
-
-{% include footer %}
-
-  </body>
-</html>
diff --git a/templates/xgc-sidenav.mdtext b/templates/xgc-sidenav.mdtext
deleted file mode 100644
index 182327f..0000000
--- a/templates/xgc-sidenav.mdtext
+++ /dev/null
@@ -1,85 +0,0 @@
-[![Apache XML Graphics Project Logo](/images/apache-xml-graphics.gif "Apache XML Graphics Project")](/)
-
-# XML Graphics Commons
-  - [Overview](/commons/)
-  - [Download](/commons/download.html)
-  - ## Documentation
-    - [Tools for Adobe PostScript](/commons/postscript.html)
-    - [Image Loader Framework](/commons/image-loader.html)
-    - [XML Graphics Commons Components Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICS/XmlGraphicsCommonComponents)
-  - ## Information
-    - [Bugs](/commons/bugs.html)
-    - [Changes](/commons/changes.html)
-    - [Code Repositories](/repo.html)
-    - [Mailing Lists](/mail.html)
-  
-# Apache&trade; XML Graphics
-  - ### Project Overview
-    - [Who We Are](/team.html)
-    - [Legal Stuff](/legal.html)
-    - [Project Charter](/charter.html)
-    - [Mailing Lists](/mail.html)
-    - [Code Repositories](/repo.html)
-    - [ASF Sponsorship Program](https://www.apache.org/foundation/sponsorship.html)
-    - [ASF Thanks](https://www.apache.org/foundation/thanks.html)
-    - [Licenses](https://www.apache.org/licenses/)
-    - [Apache XML Graphics Security](/security.html)
-    - [ASF Security](https://www.apache.org/security/)
-
-# Sub Projects
-  - [Apache Batik](/batik/)
-  - [Apache FOP](/fop/)
-  - [Apache XML Graphics Commons](/commons/)
-
-## Search Apache XML Graphics
-
-<form name="search" id="search" action="https://www.google.com/search" method="get">
-  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
-  <input type="text" name="q" id="query" />
-  <input type="submit" id="submit" value="Search" />
-</form>
-
-### ApacheCon N. America
-
-<a title="ApacheCon North America" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon North America" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />
-
-  * **[ApacheCon NA](https://www.apachecon.com/)**
-
-Hope to see you there!
-
-### ApacheCon Europe
-
-<a title="ApacheCon Europe" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon Europe" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />
-
-  * **[ApacheCon Europe](https://www.apachecon.com/)**
-
-Hope to see you there!
-
-<a title="Apache Software Foundation" href="https://www.apache.org"><img id="asf_logo_url" alt="Apache Software Foundation " src="/images/asf_logo_url.png" width="200" /></a><br /><br />
-
-<a title="Support the Apache Software Foundation" href="https://donate.apache.org/"><img id="asf_support_url" alt="Support the Apache Software Foundation " src="https://blogs.apache.org/foundation/mediaresource/d67ca611-a57c-462d-ac23-95063f81d175" width="200" /></a>
-
-<script>
-$(document).ready(function () {
-    $('#navigation :header').click(function () {
-        var text = $(this).siblings('ul');
-        if (text.is(':hidden')) {
-            text.slideDown('200');
-        } else {
-            text.slideUp('200');
-        }
-    });
-    if ($('#navigation :header').siblings('ul')) {
-    $('#navigation :header').append(' &raquo;');
-    }
-  $('#navigation > ul > li ul').hide();
-  var str=location.href.toLowerCase();
-  $("#navigation li a").each(function() {
-    if (str.indexOf(this.href.toLowerCase()) > -1) {
-      $(this).parents().slideDown('200');
-       $("li.highlight").removeClass("highlight");
-       $(this).parent().addClass("highlight");
-    }
-  });
-})
-</script>
diff --git a/templates/xgc-top.html b/templates/xgc-top.html
deleted file mode 100644
index 091d5e4..0000000
--- a/templates/xgc-top.html
+++ /dev/null
@@ -1,11 +0,0 @@
-	<div id="banner">&nbsp;
-	</div>
-
-	<div id="navigation">
-	{% filter markdown %}{% include sidenav %}{% endfilter %}
-	</div>
-
-	<div id="bannertext" style="border-bottom: 2px dashed #666666; height: 60px;">
-	  <a href="/"><img src="/images/apache-xml-graphics.gif" alt="The Apache FOP Project" width="226" height="51" style="float:left; margin-right: 15px;" /></a>
-	  <h2>The Apache&trade; XML Graphics Project</h2>
-	</div><!-- <h1>{% block tagline %}{{ headers.title }}{% endblock %}</h1> -->{% block content %}
