diff --git a/output/css/print.css b/output/css/print.css
new file mode 100755
index 0000000..357ba0f
--- /dev/null
+++ b/output/css/print.css
@@ -0,0 +1,60 @@
+/*
+* 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.
+*/
+body, #content {
+    color: #111;
+    font-family: Georgia, 'Times New Roman', serif; 
+    font-size: 12pt;
+    background-color: #fff;
+    line-height: 1.3;
+}
+
+#navigation {
+	display: none;
+}
+
+#content, #footer { width: 100%; margin: .5em; float: none; }
+
+a:link:after,
+a:visited:after,
+a:hover:after,
+a:active:after {
+	content: " (" attr(href) ") ";
+	color: grey;
+	font-style: italic;
+	font-weight: normal;
+}
+a[href^="/"]:after {
+	content: " (http://xmlgraphics.apache.org"attr(href)") ";
+}
+a[href^="mailto"]:after {
+	content: "";
+}
+
+h1 {font-size: 24pt}
+
+h2 {font-size: 14pt; margin-top: 15px}
+
+* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } /* Black prints faster: h5bp.com/s */
+abbr[title]:after { content: " (" attr(title) ")"; }
+.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after, a:after img { content: ""; }  /* Don't show links for images, or javascript/internal links */
+pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+thead { display: table-header-group; } /* h5bp.com/t */
+tr, img { page-break-inside: avoid; }
+img { max-width: 100% !important; border: 0 }
+@page { margin: 0.5cm; }
+p, h1, h2, h3 { orphans: 3; widows: 3; }
+h1, h2, h3 { page-break-after: avoid; }
diff --git a/output/css/profile.css b/output/css/profile.css
new file mode 100755
index 0000000..7996efa
--- /dev/null
+++ b/output/css/profile.css
@@ -0,0 +1,183 @@
+
+
+/* ==================== aural ============================ */
+
+@media aural {
+  h1, h2, h3, h4, h5, h6 { voice-family: paul, male; stress: 20; richness: 90 }
+  h1 { pitch: x-low; pitch-range: 90 }
+  h2 { pitch: x-low; pitch-range: 80 }
+  h3 { pitch: low; pitch-range: 70 }
+  h4 { pitch: medium; pitch-range: 60 }
+  h5 { pitch: medium; pitch-range: 50 }
+  h6 { pitch: medium; pitch-range: 40 }
+  li, dt, dd { pitch: medium; richness: 60 }
+  dt { stress: 80 }
+  pre, code, tt { pitch: medium; pitch-range: 0; stress: 0; richness: 80 }
+  em { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
+  strong { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
+  dfn { pitch: high; pitch-range: 60; stress: 60 }
+  s, strike { richness: 0 }
+  i { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
+  b { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
+  u { richness: 0 }
+
+  :link { voice-family: harry, male }
+  :visited { voice-family: betty, female }
+  :active { voice-family: betty, female; pitch-range: 80; pitch: x-high }
+}
+
+a.external  {
+  padding: 0 20px 0px 0px;
+    display:inline;
+  background-repeat: no-repeat;
+    background-position: center right;
+    background-image: url(images/external-link.gif);
+}
+
+#top          { background-color: #FFFFFF;}
+
+#top .header .current { background-color: #a5b6c6;}
+#top .header .current a:link {  color: #000000;  }
+#top .header .current a:visited { color: #000000; }
+#top .header .current a:hover { color: #000000; }
+
+#tabs li      { background-color: #F7F7F7 ;}
+#tabs li a:link {  color: #000000;  }
+#tabs li a:visited { color: #000000; }
+#tabs li a:hover { color: #000000; }
+
+#level2tabs a.selected      { background-color: #a5b6c6 ;}
+#level2tabs a:link {  color: #000000;  }
+#level2tabs a:visited { color: #000000; }
+#level2tabs a:hover { color: #000000; }
+
+#level2tabs { background-color: #a5b6c6;}
+#level2tabs a.unselected:link {  color: #000000;  }
+#level2tabs a.unselected:visited { color: #000000; }
+#level2tabs a.unselected:hover { color: #000000; }
+
+.heading { background-color: #a5b6c6;}
+
+.boxed { background-color: #CFDCED;}
+.underlined_5 	{border-bottom: solid 5px #CFDCED;}
+.underlined_10 	{border-bottom: solid 10px #CFDCED;}
+table caption {
+background-color: #CFDCED;
+color: #000000;
+}
+
+#top .searchbox {
+background-color: #FFFFFF ;
+color: #000000;
+}
+
+#publishedStrip {
+color: #000000;
+background: #CFDCED;
+}
+
+#menu .menupagetitle  { background-color: #a5b6c6;
+  color: #000000;}
+
+#menu           { border-color: #a5b6c6;}
+#menu .menupagetitle  { border-color: #a5b6c6;}
+#menu .menupageitemgroup  { border-color: #a5b6c6;}
+
+#menu      { background-color: #F7F7F7;}
+#menu  {  color: #000000;}
+#menu a:link {  color: #000000;}
+#menu a:visited {  color: #000000;}
+#menu a:hover {
+background-color: #F7F7F7;
+color: #000000;}
+
+#menu .menupageitemgroup     {
+background-color: #F7F7F7;
+}
+#menu .menupageitem {
+color: #000000;
+}
+#menu .menupageitem a:link {  color: #0000ff;}
+#menu .menupageitem a:visited {  color: #009999;}
+#menu .menupageitem a:hover {
+background-color: #F7F7F7;
+color: #6587ff;
+}
+
+body{
+background-color: #ffffff;
+color: #000000;
+}
+a:link { color:#0F3660}
+a:visited { color:#009999}
+a:hover { color:#000066}
+
+
+.ForrestTable      { background-color: #a5b6c6;}
+
+.ForrestTable td   { background-color: #ffffff;}
+
+/* .highlight        { background-color: #ffff00;} */
+.highlight        { background-color: #ffffcc;}
+
+.fixme        { border-color: #cc6600;}
+
+.note         { border-color: #006699;}
+
+.warning         { border-color: #990000;}
+
+.code         { border-color: #a5b6c6;}
+
+#footer       { background-color: #a5b6c6;}
+
+#feedback {
+color: #FFFFFF;
+background: #4C6C8F;
+text-align: center;
+}
+#feedback #feedbackto {
+color: #FFFFFF;
+}
+
+#publishedStrip {
+color: #FFFFFF;
+background: #4C6C8F;
+}
+
+#menu h1 {
+color: #000000;
+background-color: #cfdced;
+}
+
+/* extra-css */
+#content { font-size: 100%; }
+
+p.quote {
+      margin-left: 2em;
+      padding: .5em;
+      background-color: #f0f0f0;
+      font-family: monospace;
+}
+/* for batik satus tables and fop compliance table */
+.yes      { background-color: #99FF99; text-align: center; }
+.no       { background-color: #FF9999; text-align: center; }
+.partial  { background-color: #FFFFCC; text-align: center; }
+.na       { text-align: center; }
+.basic,
+.extended,
+.complete { text-align: center; }
+.category { font-size: 1.2em }
+.tableSectionHeader { font-weight: bold; }
+.tableSubSectionHeader { font-style: italic; padding-left: 2em !important; }
+.ForrestTable td.basic      { text-align: center; }
+.ForrestTable td.extended   { text-align: center; }
+.ForrestTable td.complete   { text-align: center; }
+.ForrestTable td.na         { text-align: center; }
+.ForrestTable td.yes        { background-color: #99FF99; text-align: center; }
+.ForrestTable td.no         { background-color: #FF9999; text-align: center; }
+.ForrestTable td.partial    { background-color: #FFFFCC; text-align: center; }
+.ForrestTable td.category   { /*background-color: #CFDCED;*/
+                                   font-size: 1.2em }
+.menuitemgroup{ display: block;}
+
+
diff --git a/output/css/xmlgraphics.css b/output/css/xmlgraphics.css
new file mode 100755
index 0000000..92d3402
--- /dev/null
+++ b/output/css/xmlgraphics.css
@@ -0,0 +1,287 @@
+/*
+* 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.
+*/
+body {
+    color: #333;
+    font-family: Tahoma,Verdana,Geneva,sans-serif;
+    font-size: 11pt;
+    margin: 0;
+    background-color: #efefef;
+    overflow: auto;
+}
+#banner {
+    margin-top: 0;
+    min-width: 850px;
+    padding: 10px;
+}
+#logo {
+    margin-left: 20px;
+    text-align: left;
+}
+#bannertext, #content, #footer {
+    background-color: #fff;
+    color: #333;
+    margin: 0 50px 0 260px;
+    padding: 20px;
+}
+#bannertext {
+    margin-top: 10px;
+    text-align: left;
+}
+.clear {
+    clear: both;
+}
+a {
+    color: #107EC0;
+}
+a:visited {
+    color: #107EC0;
+}
+a:hover {
+    background-color: #E6EBED;
+    color: #107EC0;
+}
+a img {
+    border: medium none;
+}
+h1, h2, h3, h4, h5, h6 {
+    color: black;
+    padding: 10px 0 5px;
+}
+h1, h3 {
+    font-variant: small-caps;
+}
+#content {
+    color: #333333;
+    padding: 0 18px 40px;
+    margin-top: -12px;
+}
+#content h1 {
+    font-size: 1.7em;
+}
+#content h2 {
+    border-bottom: 1px dashed #666666;
+    font-size: 1.2em;
+}
+#content h3, h4, h5, h6 {
+    border-bottom: medium none;
+    font-size: 1em;
+    margin-bottom: 0;
+}
+#content img {
+    vertical-align: middle;
+}
+#navigation, #items {
+    -moz-border-bottom-colors: none;
+    -moz-border-image: none;
+    -moz-border-left-colors: none;
+    -moz-border-right-colors: none;
+    -moz-border-top-colors: none;
+    background: none repeat scroll 0 0 #F5F8FA;
+    border-color: #C0C0C0 #C0C0C0 #C0C0C0 -moz-use-text-color;
+    border-radius: 10px 10px 10px 0;
+    border-style: solid solid solid none;
+    border-width: 1px medium 1px 1px;
+    color: #000033;
+    font-size: 0.9em;
+    margin: 0 0 20px;
+    padding: 15px 25px 5px 15px;
+    width: 225px;
+}
+#navigation {
+    float: left;
+}
+#items {
+    float: right;
+}
+#navigation img {
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+}
+#navigation > ul > li > h1, #items h2 {
+    border-bottom: 2px dashed #666666;
+}
+#navigation h1 {
+    color: #000000;
+    font-size: 140%;
+    margin-bottom: 0;
+    margin-top: 0.8em;
+    padding: 0;
+}
+#navigation h2 {
+    font-size: 120%;
+    cursor: pointer;
+    background-color: #CCC;
+    padding: 4px 7px;
+    -webkit-border-radius: 8px;
+    -moz-border-radius: 8px;
+    border-radius: 8px;
+    margin-left: -10px;
+}
+#navigation h3 {
+    font-size: 120%;
+}
+#navigation ul {
+    list-style: none outside none;
+    margin: 0;
+    padding: 0;
+}
+#navigation li {
+    border-bottom: 1px solid #CCCCCC;
+    margin: 0.2em 0;
+    padding: 0;
+}
+#navigation li a {
+    margin: 0;
+    text-decoration: none;
+}
+#navigation li a:hover {
+    background: none repeat scroll 0 0 transparent;
+    color: #193240;
+}
+#navigation ul ul, #navigation ul ul li {
+    margin-left:5px;
+}
+#navigation h1 {
+    margin-left:-5px;
+}
+#footer {
+    border-top: 1px solid #CCCCCC;
+    color: #666666;
+    font-size: 80%;
+    padding: 0 8px;
+    text-align: center;
+}
+.copyright {
+    float: left;
+}
+#asf-logo {
+    float: left;
+    padding-top: 15px;
+}
+li p {
+    padding-left: 0;
+}
+p {
+    padding: 0 15px;
+}
+dd {
+}
+dl {
+}
+dt {
+    display: inline;
+    float: left;
+}
+.section-content > p > version {
+  display: none;
+}
+version {
+    display: none;
+}
+
+/* ToC */
+#items {
+/*
+    float: right;
+    width: 260px;
+    padding-bottom: 10px;
+    margin:0 0 10px 20px;
+    */
+    -moz-border-bottom-colors: none;
+    -moz-border-image: none;
+    -moz-border-left-colors: none;
+    -moz-border-right-colors: none;
+    -moz-border-top-colors: none;
+    background: none repeat scroll 0 0 #eee;
+    border-color: #C0C0C0 #C0C0C0 #C0C0C0 -moz-use-text-color;
+    border-radius: 10px;
+    border-style: solid;
+    border-width: 1px medium 1px 1px;
+    color: #000033;
+    float: right;
+    font-size: 0.9em;
+    margin: 10px 20px;
+    padding: 10px;
+    width: 225px;
+}
+#items h3 {
+    margin-top: 0;
+    padding-top: 0;
+}
+#items ul {
+    margin: 0 0 0 15px;
+    padding: 0 0 5px;
+    list-style-type: none;
+}
+#items ul {
+    font-size: 95%;
+}
+#items ul a {
+    font-family: "arial";
+    text-decoration: none;
+    color: #107EC0;
+}
+#items ul a:hover { color: #000 }
+
+note, warning {
+    margin: 1em 0;
+    border: solid 1px;
+    display: block;
+    font-size: 90%;
+    line-height: 120%;
+    padding: 5px 10px;
+    color: black;
+    border-radius: 8px;
+}
+note {
+    border-color: #006699;
+    background-color: #f0f0ff;
+}
+warning {
+    border-color: #990000;
+    background-color: #fff0f0;
+}
+note:before, warning:before {
+    display: block;
+    font-weight: bold;
+    padding: 5px 10px;
+    margin: -5px -10px 10px;
+    color: white;
+    border-radius: 7px 7px 0 0;
+}
+note:before {
+    content: "Note";
+    background-color: #336699;
+}
+warning:before {
+    content: "Warning";
+    background-color: #cc0000;
+}
+
+li .codehilite {
+    margin-left: 0;
+}
+.codehilite {
+    background-color: #ccc;/* this will be overwritten by http://www.apache.org/css/code.css */
+    border-radius: 10px;
+    padding: 0 0.5em;
+    margin: 0 1em;
+}
+.codehilite pre {
+    white-space: pre-wrap;
+}
\ No newline at end of file
