Move first stab at ServiceMix 5 into a separate branch

git-svn-id: https://svn.apache.org/repos/asf/servicemix/smx5/branches/first_stab_at_smx5@1442546 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/assembly/pom.xml b/assembly/pom.xml
new file mode 100644
index 0000000..c09d337
--- /dev/null
+++ b/assembly/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix</groupId>
+        <artifactId>servicemix-parent</artifactId>
+        <version>5.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix</groupId>
+    <artifactId>apache-servicemix</artifactId>
+    <packaging>pom</packaging>
+    <version>5.0.0-SNAPSHOT</version>
+    <name>Apache ServiceMix :: Assembly</name>
+
+</project>
diff --git a/console/pom.xml b/console/pom.xml
new file mode 100644
index 0000000..edbb1b5
--- /dev/null
+++ b/console/pom.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix</groupId>
+        <artifactId>servicemix-parent</artifactId>
+        <version>5.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix</groupId>
+    <artifactId>servicemix-console</artifactId>
+    <packaging>war</packaging>
+    <version>5.0.0-SNAPSHOT</version>
+    <name>Apache ServiceMix :: Console</name>
+
+    <properties>
+        <jetty-port>8080</jetty-port>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.fusesource.scalate</groupId>
+            <artifactId>scalate-wikitext</artifactId>
+            <version>${scalate-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>0.9.24</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-compiler</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.fusesource.scalamd</groupId>
+            <artifactId>scalamd</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.fusesource.scalate</groupId>
+            <artifactId>scalate-util</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-client</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-json</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src/main/scala</sourceDirectory>
+
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>false</filtering>
+            </resource>
+        </resources>
+
+        <plugins>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                    <attachClasses>true</attachClasses>
+                </configuration>
+            </plugin>
+
+            <!--
+            <plugin>
+                <groupId>org.fusesource.scalate</groupId>
+                <artifactId>maven-scalate-plugin</artifactId>
+                <version>${scalate-version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>precompile</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            -->
+
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <version>${jetty-version}</version>
+                <configuration>
+                    <!--
+                             <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
+                             <port>${jetty.port}</port> <maxIdleTime>60000</maxIdleTime>
+                             </connector> </connectors>
+                         -->
+
+                    <webAppConfig>
+                        <contextPath>/</contextPath>
+                    </webAppConfig>
+
+                    <systemProperties>
+                        <!-- enable easy JMX connection to JConsole -->
+                        <systemProperty>
+                            <name>com.sun.management.jmxremote</name>
+                            <value/>
+                        </systemProperty>
+                    </systemProperties>
+                    <!--
+                    <scanIntervalSeconds>10</scanIntervalSeconds>
+                    -->
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/console/src/main/scala/org/apache/servicemix/console/JSonProvider.scala b/console/src/main/scala/org/apache/servicemix/console/JSonProvider.scala
new file mode 100644
index 0000000..9c4e407
--- /dev/null
+++ b/console/src/main/scala/org/apache/servicemix/console/JSonProvider.scala
@@ -0,0 +1,12 @@
+package org.apache.servicemix.console
+
+import org.codehaus.jackson.jaxrs.Annotations
+import org.codehaus.jackson.jaxrs.JacksonJsonProvider
+import org.codehaus.jackson.map.SerializationConfig
+
+class JsonProvider extends JacksonJsonProvider(Annotations.JAXB) {
+
+  configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false)
+
+}
+
diff --git a/console/src/main/webapp/WEB-INF/scalate/layouts/default.scaml b/console/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
new file mode 100644
index 0000000..c9da696
--- /dev/null
+++ b/console/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
@@ -0,0 +1,116 @@
+-#
+-# Copyright (C) 2009-2010 the original author or authors.
+-# See the notice.md file distributed with this work for additional
+-# information regarding copyright ownership.
+-#
+-# Licensed 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.
+-#
+
+-@ var body: String
+-@ var title : String = "Apache Karaf ${pom.version} Guide"
+- response.setContentType("text/html")
+
+-# Only include the console if it's available and the engine is in dev mode.
+- val include_console = engine.isDevelopmentMode && engine.resourceLoader.exists("/org/fusesource/scalate/console/console_head.scaml")
+
+!!! Basic
+%html(lang="en")
+  %head
+    %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
+    %meta(name="description" content="description goes here")
+    %meta(name="keywords" content="keywords,goes,here")
+    %meta(name="author" content="The Apache Karaf Team")
+
+    - if (include_console)
+      = include("/org/fusesource/scalate/console/console_head.scaml")
+
+    %link(href={uri("/css/style.css")} rel="stylesheet" type="text/css")
+    %link(href={uri("/css/pygmentize.css")} rel="stylesheet" type="text/css")
+
+    - if (include_console)
+      %link(href={uri("/css/scalate/console.css")} rel="stylesheet" type="text/css")
+
+    %title
+      = title
+  
+  %body
+    %table{:width => "100%", :cellpadding => "0", :cellspacing => "0"}
+      %tr{:width => "100%"}
+        %td#cell-0-0{:colspan => "2"}
+          &nbsp;
+        %td#cell-0-1
+          &nbsp;
+        %td#cell-0-2{:colspan => "2"}
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-1-0
+          &nbsp;
+        %td#cell-1-1
+          &nbsp;
+        %td#cell-1-2
+          %div{:style => "padding: 5px;"}
+            #banner
+              = include("/_banner.ssp")
+            #top-menu
+              %table{:border => "0", :cellpadding => "1", :cellspacing => "0", :width => "100%"}
+                %tr
+                  %td
+                    %div{:align => "left"}
+                  %td
+                    %div{:align => "right"}
+                      = include("/_quicklinks.ssp")
+        %td#cell-1-3
+          &nbsp;
+        %td#cell-1-4
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-2-0{:colspan => "2"}
+          &nbsp;
+        %td#cell-2-1
+          %table
+            %tr{:height => "100%", :valign => "top"}
+              %td{:height => "100%"}
+                #wrapper-menu-page-right
+                  #wrapper-menu-page-top
+                    #wrapper-menu-page-bottom
+                      #menu-page
+                        = include("/_navigation.conf")
+              %td{:height =>"100%", :width => "100%"}
+                .wiki-content
+                  !~~ body
+        %td#cell-2-2{:colspan => "2"}
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-3-0
+          &nbsp;
+        %td#cell-3-1
+          &nbsp;
+        %td#cell-3-2
+          #footer
+            #site-footer
+              &copy; 2008-2011 The Apache Software Foundation
+              %br
+              Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+        %td#cell-3-3
+          &nbsp;
+        %td#cell-3-4
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-4-0{:colspan => "2"}
+          &nbsp;
+        %td#cell-4-1
+          &nbsp;
+        %td#cell-4-2{:colspan => "2"}
+          &nbsp;
+    - if (include_console)
+      = include("/org/fusesource/scalate/console/console.scaml")
diff --git a/console/src/main/webapp/WEB-INF/scalate/layouts/print.ssp b/console/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
new file mode 100644
index 0000000..1a042ef
--- /dev/null
+++ b/console/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
@@ -0,0 +1,817 @@
+<%--
+Copyright (C) 2009-2010 the original author or authors.
+See the notice.md file distributed with this work for additional
+information regarding copyright ownership.
+
+Licensed 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.
+--%>
+<%@ var body: String %>
+<%@ var title: String = "Apache Karaf ${karaf.version}" %>
+<% escapeMarkup = false %>
+<!DOCTYPE html>
+<html>
+<head>
+  <style type="text/css">
+/*
+
+Copyright (c) 2005 Hakon Wium Lie and Bert Bos
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+html {
+  margin: 0; padding: 0;
+  font: 10pt/1.26 "Gill Sans", sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  font-family: "Gill Sans", sans-serif;
+  margin: 2em 0 0.5em 0;
+  page-break-after: avoid;
+}
+
+h1 {
+  font-size: 2.0em;
+  font-weight: 900;
+
+  margin: 0;
+  margin-left:-2cm;
+  margin-top:-1cm;
+  margin-bottom:1.5cm;
+  top: 0cm;
+  left: 0cm;
+  padding: 2cm;
+  padding-top: 0cm;
+  padding-bottom: 1cm;
+  background: #888;
+  border-bottom-right-radius: 2cm;
+  page-break-before: always;
+  page-break-inside: avoid;
+}
+
+@media screen, handheld {
+h1 {
+  margin-top:1cm;
+  background-image: url("chapter-rounded-bottom.png");
+  background-repeat: no-repeat;
+  background-position: bottom right;
+}
+div.page-reset > h1 {
+  margin-top:0cm;
+}
+}
+
+
+h2 {
+  font-size: 1.2em;
+  text-transform: uppercase;
+  font-weight: bold;
+}
+
+h3 {
+  font-size: 1em;
+  font-weight: bold;
+}
+
+q::before {
+  content: "\201C";
+}
+
+q::after {
+  content: "\201D";
+}
+
+p { margin: 0 }
+p + p { text-indent: 1.3em ; margin-top: 0.2em; }
+p.sidenote + p, p.caption, p.art { text-indent: 0 }
+
+p.author {
+  margin-top: 2em;
+  text-indent: 0;
+  text-align: right;
+}
+
+a { text-decoration: none; color: black }
+
+/* cross-references */
+
+a.pageref::after { content: " on page " target-counter(attr(href), page); }
+a.chapref::before { content: " Chapter " target-counter(attr(href), chapter) ", "; }
+a.figref { content: " Figure " target-counter(attr(href), figure); }
+a.tableref { content: " Table " target-counter(attr(href), figure); }
+a.listingref { content: " Listing " target-counter(attr(href), listing); }
+
+/* sidenotes */
+
+.sidenote {
+  float: left;
+  clear: left;
+  margin: 0 0 1em -41%;
+  width: 37%;
+  font-size: 0.9em;
+  font-style: normal;
+  text-indent: 0;
+  text-align: right;
+  page-break-inside: avoid;
+}
+
+/* sidebars */
+
+div.sidebar {
+  float: top-next;
+  margin: 1.2em 0 1.2em 0;
+  border: thin solid;
+  background: #CCC;
+  padding: 0.5em 1em;
+  page-break-inside: avoid;
+  column-count: 2;
+  column-gap: 1.5em;
+}
+
+div.sidebar h2 {
+  margin-top: 0;
+}
+
+/* frontpage */
+
+.title p{
+	font-size:22pt;
+  	font-family: "Gill Sans", sans-serif;
+  	text-align: center;
+}
+
+.copyright-section {
+	text-align: center;
+	font-size: 9pt;
+	page-break-after: always;
+	margin-top: 50pt;
+	margin-bottom: 20pt;
+}
+
+.toc-title {
+	font-size:18pt;
+  	font-family: "Gill Sans", sans-serif;
+  	text-align: left;
+  	margin-left:20pt;
+  	margin-bottom: 40pt;
+
+}
+
+/* figures, tables, and listings */
+
+div.confluenceTableSmall th.confluenceTh {
+  font-size: 11px;
+}
+
+div.confluenceTableSmall td.confluenceTd {
+  font-size: 7px;
+}
+
+div.figure {
+  margin: 1em 0;
+  counter-increment: figure;
+}
+
+div.figure .caption, div.table .caption {
+  font-size: 0.9em;
+  font-style: italic;
+}
+
+div.figure .caption::before {
+  content: "Figure " counter(figure) ". ";
+  font-weight: bold;
+  font-style: normal;
+}
+
+div.table .caption::before {
+  content: "Table " counter(table) ". ";
+  font-weight: bold;
+  font-style: normal;
+}
+
+div.table {
+  margin: 1em 0;
+  counter-increment: table;
+}
+
+div.table th {
+  text-align: left;
+}
+
+table th, table td {
+  text-align: left;
+  padding-right: 1em;
+  page-break-inside: avoid;
+}
+
+table th {
+  border-top: thin solid;
+  border-bottom: thin solid;
+  padding-top: 0.2em;
+  padding-bottom: 0.2em;
+}
+table td {
+  border-top: none;
+  border-bottom: thin dotted;
+  padding-top: 0.2em;
+  padding-bottom: 0.2em;
+}
+
+div.Scrollbar {
+	display: none;
+}
+
+
+/* Weird div.codeHeader a b::before would be a better selection
+   but prince does not properly match it.. Firefox does. */
+div.codeHeader::before {
+  content: "Listing " counter(listing) ". ";
+  font-weight: bold;
+  font-style: normal;
+}
+div.codeHeader a b {
+  font-style: italic;
+  font-weight: normal;
+}
+div.codeHeader {
+  font-size: 0.9em;
+  counter-increment: listing;
+}
+div.code {
+	border: 1px dashed #c0c0c0;
+    font-size: 12px;
+	font-family: Courier;
+    margin: 5px;
+	line-height: 13px;
+	padding: 3px;
+	background-color: #f8f8f8;
+
+}
+
+
+@page {
+  margin: 2cm;
+  size: 7in 9.25in;
+
+  @footnotes {
+    border-top: thin solid black;
+    padding-top: 0.3em;
+    margin-top: 0.6em;
+  }
+}
+
+
+/* define default page and names pages: cover, blank, frontmatter */
+div.page-reset {
+    counter-reset: page 1;
+}
+
+@page :left {
+  @top-left-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: left;
+    margin-left: 1cm;
+    visibility: hidden;
+  }
+  @top-left {
+    font-weight: 900;
+    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first);
+    visibility: hidden;
+  }
+  @bottom-left-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: left;
+    margin-left: 1cm;
+  }
+  @bottom-left {
+    font-weight: 900;
+    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first);
+  }
+}
+
+@page :right {
+  @top-right-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: left;
+    margin-left: 1cm;
+    visibility: hidden;
+  }
+  @top-right {
+    font-weight: 900;
+    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first)
+    visibility: hidden;
+  }
+  @bottom-right-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: right;
+    margin-right: 1cm;
+  }
+  @bottom-right {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first)
+  }
+}
+
+/*
+  In theory we should be able to use the :first selector so taht
+  we can put the page numbering on the bottom of the first page of the chapter
+  but have the rest of the pages number at the top.  But this does not seem
+  to work.  See http://www.princexml.com/doc/6.0/page-selectors/
+
+  So for now just always number at the bottom :(
+*/
+/*
+div.chapter { page: bottom-number; }
+@page bottom-number :first {
+  @top-left {
+    visibility: hidden;
+  }
+  @bottom-left {
+    visibility: visible;
+  }
+  @top-right {
+    visibility: hidden;
+  }
+  @bottom-right {
+    visibility: visible;
+  }
+}
+*/
+
+@page cover { margin: 0; }
+
+@page frontmatter :left {
+  @bottom-left-corner {
+    content: counter(page, lower-roman);
+  }
+  @bottom-left-corner {
+    content: counter(page, lower-roman);
+  }
+}
+
+@page frontmatter :right {
+  @bottom-right-corner {
+    content: counter(page, lower-roman);
+  }
+  @bottom-right-corner {
+    content: counter(page, lower-roman);
+  }
+}
+
+@page blank :left {
+  @top-left { visibility: hidden; }
+  @bottom-left { visibility: hidden; }
+  @top-left-corner { visibility: hidden; }
+  @bottom-left-corner { visibility: hidden; }
+}
+
+@page blank :right {
+  @top-right { visibility: hidden; }
+  @bottom-right { visibility: hidden; }
+  @top-right-corner { visibility: hidden; }
+  @bottom-right-corner { visibility: hidden; }
+}
+
+/* footnotes */
+.footnote {
+  display: none;                   /* default rule */
+
+  display: prince-footnote;        /* prince-specific rules */
+  position: footnote;
+  footnote-style-position: inside;
+
+  counter-increment: footnote;
+  margin-left: 1.4em;
+  font-size: 90%;
+  line-height: 1.4;
+}
+
+.footnote::footnote-call {
+  vertical-align: super;
+  font-size: 80%;
+}
+
+.footnote::footnote-marker {
+  vertical-align: super;
+  color: green;
+  padding-right: 0.4em;
+}
+
+/* Confluence contents to hide */
+#labels-section {
+	display: none;
+}
+#comments-section {
+	display: none;
+}
+#footer {
+	display: none;
+}
+.hidden {
+	display: none;
+}
+
+/*
+   A book consists of different types of sections. We propose to use
+   DIV elements with these class names:
+
+    frontcover
+    halftitlepage: contains the title of the book
+    titlepage: contains the title of the book, name of author(s) and publisher
+    imprint: left page with copyright, publisher, library printing information
+    dedication: right page with short dedication
+    foreword: written by someone other than the author(s)
+    toc: table of contents
+    preface: preface, including acknowledgements
+    chapter: each chapter is given its own DIV element
+    references: contains list of references
+    appendix: each appendix is given its own
+    bibliography
+    glossary
+    index
+    colophon: describes how the book was produced
+    backcover
+
+   A book will use several of the types listed above, but few books
+   will use all of them.
+*/
+
+/* which section uses which named page */
+
+div.halftitlepage, div.titlepage, div.imprint, div.dedication { page: blank }
+div.foreword, div.toc, div.preface { page: frontmatter }
+
+
+/* page breaks */
+div.frontcover, div.halftitlepage, div.titlepage { page-break-before: right }
+div.imprint { page-break-before: always; }
+div.chapter { page-break-before: always; }
+div.dedication, div.foreword, div.toc, div.preface, div.reference,
+div.appendix, div.bibliography, div.glossary, div.index, div.colophon {
+  page-break-before: always
+}
+div.backcover { page-break-before: left }
+
+/* titlepage, halftitlepage */
+
+div.titlepage h1, div.halftitlepage h1 { margin-bottom: 2em; }
+div.titlepage h2, div.halftitlepage h2 { font-size: 1.2em; margin-bottom: 3em; }
+div.titlepage h3, div.halftitlepage h3 { font-size: 1em; margin-bottom: 3em; }
+div.titlepage p, div.halftitlepage p {
+  font-size: 1.4em;
+  font-weight: bold;
+  margin: 0; padding: 0;
+}
+
+
+/* TOC */
+
+ul.toc, ul.toc ul {
+  list-style-type: none;
+  margin: 0; padding: 0;
+  margin-left: 3cm;
+}
+ul.toc ul {
+  margin-left: 1em;
+  font-weight: normal;
+}
+ul.toc > li {
+  font-weight: bold;
+  margin-bottom: 0.5em;
+}
+ul.toc a::after {
+  content: leader('.') target-counter(attr(href), page);
+  font-style: normal;
+}
+ul.toc > li.frontmatter a::after {
+  content: leader('.') target-counter(attr(href), page, lower-roman);
+  font-style: normal;
+}
+ul.toc > li.endmatter a::after {
+  content: leader('.') target-counter(attr(href), page);
+  font-style: normal;
+}
+ul.toc > li.chapter::before {
+  content: "Chapter " counter(toc-chapter, decimal);
+  display: block;
+  margin: 1em 0 0.1em -2.5cm;
+  font-weight: normal;
+  counter-increment: toc-chapter;
+  page-break-after: avoid;
+}
+
+/* chapter numbers */
+
+div.chapter { counter-increment: chapter; }
+div.chapter h1::before {
+  text-transform: uppercase;
+  letter-spacing: 0.15em;
+  content: "Chapter  " counter(chapter) " \A\B0 \B0 \B0 \B0\A";
+  white-space: pre;
+  font-size: 50%;
+}
+
+div.frontcover h1::before, div.titlepage h1::before, div.halftitlepage h1::before {
+  content: normal; /* that is, none */
+}
+
+h1 { string-set: header content();}
+div.chapter h1 { string-set: header "Chapter " counter(chapter) " - " content(); }
+
+/* index */
+
+ul.index {
+  list-style-type: none;
+  margin: 0; padding: 0;
+  column-count: 2;
+  column-gap: 1em;
+}
+
+ul.index a::after { content: ", " target-counter(attr(href), page); }
+
+
+span.element, span.attribute {
+  text-transform: uppercase;
+  font-weight: bold;
+  font-size: 80%;
+}
+span.property { font-weight: bold }
+code, span.css, span.value, span.declaration {
+  font: 90% "Lucida Console", "Lucida Sans Typewriter", monospace;
+}
+
+
+@media screen, handheld {
+  html {font: 14px "Gill Sans", sans-serif; }
+  h1 { margin-bottom: 0.5em }
+  div.frontcover, div.halftitlepage, div.titlepage, div.imprint,
+  div.dedication, div.foreword, div.toc, div.index { display: none }
+  body {
+      margin: 0cm;
+      margin-left: 2cm;
+      margin-right: 2cm;
+  }
+}
+
+/*
+ * Enhancements to the take advantage of some of the style markup that
+ * Confluence generates
+ */
+a sup img { visibility: hidden; position: absolute;}
+
+img {
+  prince-image-resolution:150dpi;
+}
+
+table {
+  font: "Lucida Console", "Lucida Sans Typewriter", monospace;
+}
+
+table td {
+  font-size: 10pt;
+}
+
+pre {
+   white-space: pre-wrap;
+}
+
+.codeContent {
+  font-size: 80%;
+}
+.code {
+}
+.code-keyword {
+  color: #000091;
+  background-color: inherit;
+}
+
+.code-object {
+  color: #910091;
+  background-color: inherit;
+}
+
+.code-quote {
+  color: #009100;
+  background-color: inherit;
+}
+
+.code-comment {
+  color: #808080;
+  background-color: inherit;
+}
+
+
+.code-xml .code-keyword {
+  color: inherit;
+  font-weight: bold;
+}
+
+.code-tag {
+  color: #000091;
+  background-color: inherit;
+}
+
+.noteMacro { border-color: #F0C000; background-color: #FFFFCE;}
+.warningMacro { border-color: #CC0000; background-color: #FFCCCC }
+.infoMacro { border-color: #3c78b5; background-color: #D8E4F1; }
+.tipMacro { border-color: #090; background-color: #dfd;}
+.noteMacro, .warningMacro, .infoMacro, .tipMacro, .informationMacroPadding {
+  border: thin solid;
+  float: top-next;
+  margin: 1em 0 1.2em 0;
+  padding: 0.5em;
+  column-count: 2;
+  column-gap: 1.5em;
+  width: 100%;
+}
+table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
+    border: none;
+}
+table.infoMacro p, table.warningMacro p, table.tipMacro p, table.noteMacro p, table.sectionMacro p {
+    font-size:x-small;
+    margin-top: 1em;
+}
+  </style>
+  <style type="text/css">
+.syntax .hll { background-color: #ffffcc }
+.syntax  { background: #f0f0f0; }
+.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
+.syntax .err { border: 1px solid #FF0000 } /* Error */
+.syntax .k { color: #007020; font-weight: bold } /* Keyword */
+.syntax .o { color: #666666 } /* Operator */
+.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.syntax .cp { color: #007020 } /* Comment.Preproc */
+.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.syntax .gd { color: #A00000 } /* Generic.Deleted */
+.syntax .ge { font-style: italic } /* Generic.Emph */
+.syntax .gr { color: #FF0000 } /* Generic.Error */
+.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.syntax .gi { color: #00A000 } /* Generic.Inserted */
+.syntax .go { color: #808080 } /* Generic.Output */
+.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.syntax .gs { font-weight: bold } /* Generic.Strong */
+.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.syntax .gt { color: #0040D0 } /* Generic.Traceback */
+.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.syntax .kp { color: #007020 } /* Keyword.Pseudo */
+.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.syntax .kt { color: #902000 } /* Keyword.Type */
+.syntax .m { color: #40a070 } /* Literal.Number */
+.syntax .s { color: #4070a0 } /* Literal.String */
+.syntax .na { color: #4070a0 } /* Name.Attribute */
+.syntax .nb { color: #007020 } /* Name.Builtin */
+.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.syntax .no { color: #60add5 } /* Name.Constant */
+.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.syntax .ne { color: #007020 } /* Name.Exception */
+.syntax .nf { color: #06287e } /* Name.Function */
+.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
+.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.syntax .nv { color: #bb60d5 } /* Name.Variable */
+.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.syntax .w { color: #bbbbbb } /* Text.Whitespace */
+.syntax .mf { color: #40a070 } /* Literal.Number.Float */
+.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
+.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
+.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
+.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
+.syntax .sc { color: #4070a0 } /* Literal.String.Char */
+.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
+.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.syntax .sx { color: #c65d09 } /* Literal.String.Other */
+.syntax .sr { color: #235388 } /* Literal.String.Regex */
+.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
+.syntax .ss { color: #517918 } /* Literal.String.Symbol */
+.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
+.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
+.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
+
+
+/* don't highlight errors */
+.syntax .err {
+  border: none;
+}
+
+.syntax {
+  font-size: .9em;
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  background-color: #F8F8FF;
+
+  overflow:auto;
+  -moz-background-clip:border;
+  -moz-background-inline-policy:continuous;
+  -moz-background-origin:padding;
+  margin: 1em 0 1em 0;
+  border:1px solid #DDDDDD;
+
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
+  border-style: solid;  border-width: 1px; border-color: #dedede !important;
+  padding: 1em;
+}
+.syntax .linenodiv  {
+  background-color:#ECECEC;
+  border-right:1px solid #DDDDDD;
+  color:#AAAAAA;
+  padding: .5em;
+  text-align:right;
+}
+.syntax .highlight  {
+}
+.syntax pre {
+  margin:0;
+}
+
+pre.syntax {
+  padding: .5em;
+  background-color: #F8F8FF; overflow:auto;
+}
+
+.syntax code {
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  font-size: 10pt;
+}
+
+div.compare { width: 700px; }
+div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
+div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
+div.compare div h3 {
+  margin-left: 15px;
+  padding: 5px 15px;
+  display: inline;
+  font-size: .8em;
+  color: #666;
+
+  border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
+  border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
+  border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px;  -moz-border-radius-topleft: 8px;
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
+}
+div.compare div div {
+  margin: 5px 0px 0px 0px;
+}
+.clear {
+  clear:both;
+}
+.wide div.compare div.compare-left { float:none; width:700px; }
+.wide div.compare div.compare-right { float:none; width:700px; }
+
+  </style>
+
+  <title>${title}</title>
+</head>
+<body>
+  <div id="titlepage">
+    <div id="title">Apache Karaf</div>
+    <div id="subtitle">Version ${karaf.version}</div>
+  </div>
+  <div id="main">
+    <%= body %>
+  </div>
+</body>
+</html>
diff --git a/console/src/main/webapp/WEB-INF/web.xml b/console/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9b44f34
--- /dev/null
+++ b/console/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009-2010 the original author or authors.
+    See the notice.md file distributed with this work for additional
+    information regarding copyright ownership.
+
+    Licensed 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.
+
+-->
+
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	version="2.5">
+
+  <display-name>Apache ServiceMix Documentation</display-name>
+
+  <description>
+    Apache ServiceMix Documentation
+  </description>
+
+  <filter>
+    <filter-name>TemplateEngineFilter</filter-name>
+    <filter-class>org.fusesource.scalate.servlet.TemplateEngineFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>TemplateEngineFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <welcome-file-list>
+    <welcome-file>index.conf</welcome-file>
+  </welcome-file-list>
+
+  <error-page>
+    <error-code>500</error-code>
+    <location>/WEB-INF/scalate/errors/500.scaml</location>
+  </error-page>
+</web-app>
diff --git a/console/src/main/webapp/_banner.ssp b/console/src/main/webapp/_banner.ssp
new file mode 100644
index 0000000..899fa60
--- /dev/null
+++ b/console/src/main/webapp/_banner.ssp
@@ -0,0 +1,15 @@
+      <table border="0" cellpadding="0" cellspacing="0" width="100%">
+        <tr>
+          <td align="left" class="topbardiv" nowrap="">
+<a href="http://servicemix.apache.org/" title="An Open Source ESB and Integration Plaftorm powered by OSGi">
+            <img border="0" src="${uri("/images/smx-logo.png")}" width="400px"></img>
+            <span style="position: relative; top: -24px; font-family: Comic Sans MS; font-size: 64px; color: white;"></span>
+</a>
+          </td>
+          <td align="right" nowrap="">
+<a href="http://www.apache.org/" title="The Apache Sofware Foundation">
+            <img border="0" src="${uri("/images/asf-logo.png")}">
+</a>
+          </td>
+        </tr>
+      </table>
diff --git a/console/src/main/webapp/_navigation.conf b/console/src/main/webapp/_navigation.conf
new file mode 100644
index 0000000..ddb1684
--- /dev/null
+++ b/console/src/main/webapp/_navigation.conf
@@ -0,0 +1,2 @@
+h3. [Home|/index]
+
diff --git a/console/src/main/webapp/_quicklinks.ssp b/console/src/main/webapp/_quicklinks.ssp
new file mode 100644
index 0000000..334d683
--- /dev/null
+++ b/console/src/main/webapp/_quicklinks.ssp
@@ -0,0 +1,8 @@
+<p>
+<a href="${uri("/index.html")}" title="Home">Home</a>
+&#124;
+<a href="${uri("/index.html")}" title="Home">Home</a>
+&#124;
+<a href="${uri("/index.html")}" title="Home">Home</a>
+</p>
+
diff --git a/console/src/main/webapp/css/pygmentize.css b/console/src/main/webapp/css/pygmentize.css
new file mode 100644
index 0000000..80efdcd
--- /dev/null
+++ b/console/src/main/webapp/css/pygmentize.css
@@ -0,0 +1,134 @@
+.syntax .hll { background-color: #ffffcc }
+.syntax  { background: #f0f0f0; }
+.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
+.syntax .err { border: 1px solid #FF0000 } /* Error */
+.syntax .k { color: #007020; font-weight: bold } /* Keyword */
+.syntax .o { color: #666666 } /* Operator */
+.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.syntax .cp { color: #007020 } /* Comment.Preproc */
+.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.syntax .gd { color: #A00000 } /* Generic.Deleted */
+.syntax .ge { font-style: italic } /* Generic.Emph */
+.syntax .gr { color: #FF0000 } /* Generic.Error */
+.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.syntax .gi { color: #00A000 } /* Generic.Inserted */
+.syntax .go { color: #808080 } /* Generic.Output */
+.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.syntax .gs { font-weight: bold } /* Generic.Strong */
+.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.syntax .gt { color: #0040D0 } /* Generic.Traceback */
+.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.syntax .kp { color: #007020 } /* Keyword.Pseudo */
+.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.syntax .kt { color: #902000 } /* Keyword.Type */
+.syntax .m { color: #40a070 } /* Literal.Number */
+.syntax .s { color: #4070a0 } /* Literal.String */
+.syntax .na { color: #4070a0 } /* Name.Attribute */
+.syntax .nb { color: #007020 } /* Name.Builtin */
+.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.syntax .no { color: #60add5 } /* Name.Constant */
+.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.syntax .ne { color: #007020 } /* Name.Exception */
+.syntax .nf { color: #06287e } /* Name.Function */
+.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
+.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.syntax .nv { color: #bb60d5 } /* Name.Variable */
+.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.syntax .w { color: #bbbbbb } /* Text.Whitespace */
+.syntax .mf { color: #40a070 } /* Literal.Number.Float */
+.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
+.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
+.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
+.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
+.syntax .sc { color: #4070a0 } /* Literal.String.Char */
+.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
+.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.syntax .sx { color: #c65d09 } /* Literal.String.Other */
+.syntax .sr { color: #235388 } /* Literal.String.Regex */
+.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
+.syntax .ss { color: #517918 } /* Literal.String.Symbol */
+.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
+.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
+.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
+
+
+/* don't highlight errors */
+.syntax .err {
+  border: none;
+}
+
+.syntax {
+  font-size: .9em;
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  background-color: #F8F8FF; 
+  
+  overflow:auto;
+  -moz-background-clip:border;
+  -moz-background-inline-policy:continuous;
+  -moz-background-origin:padding;
+  margin: 1em 0 1em 0;
+  border:1px solid #DDDDDD;
+  
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;  
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
+  border-style: solid;  border-width: 1px; border-color: #dedede !important; 
+  padding: 1em;
+}
+.syntax .linenodiv  {
+  background-color:#ECECEC;
+  border-right:1px solid #DDDDDD;
+  color:#AAAAAA;
+  padding: .5em;
+  text-align:right;
+}
+.syntax .highlight  {
+}
+.syntax pre {
+  margin:0;
+}
+
+pre.syntax {
+  padding: .5em;
+  background-color: #F8F8FF; overflow:auto;
+}
+
+.syntax code {
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  font-size: 10pt;
+}
+
+div.compare { width: 700px; }
+div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
+div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
+div.compare div h3 {
+  margin-left: 15px;
+  padding: 5px 15px;
+  display: inline;
+  font-size: .8em;
+  color: #666;
+
+  border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
+  border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
+  border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px;  -moz-border-radius-topleft: 8px;
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px; 
+}
+div.compare div div {
+  margin: 5px 0px 0px 0px;
+}
+.clear {
+  clear:both;
+}
+.wide div.compare div.compare-left { float:none; width:700px; }
+.wide div.compare div.compare-right { float:none; width:700px; }
+
diff --git a/console/src/main/webapp/css/scalate/console.css b/console/src/main/webapp/css/scalate/console.css
new file mode 100644
index 0000000..4b2dfe7
--- /dev/null
+++ b/console/src/main/webapp/css/scalate/console.css
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2009-2010 the original author or authors.
+ * See the notice.md file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * Licensed 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.
+ */
+
+#scalate-console {
+  position:fixed;
+  top:40px;
+  right:10px;
+  background: #FDFCAD;
+  padding:10px;
+  border: 1px solid #BDBD81;
+  font-family:Arial,Verdana,Helvetica,sans-serif;
+  font-size: 80%;
+  max-width: 400px;
+}
+
+#scalate-console .archetypes ul, #scalate-console .templates ul, #scalate-console .resources ul, #scalate-console .layouts ul   {
+  padding-left:20px;
+  overflow: auto;
+}
+
+#scalate-console .toggle {
+  text-align: right;
+}
+
+#scalate-console .toggle img {
+  vertical-align: middle;
+}
+
+#scalate-console div.attributes {
+  margin: 10px;
+  overflow: auto;
+  background: white;
+}
+
+#scalate-console div.attributes table th {
+  text-align: left;
+  color: #993333;
+}
+#scalate-console div.attributes table td {
+  padding:2px;
+  border-top: 1px solid #BDBD81;
+}
+
+#scalate-console div.body {
+  margin: 10px;
+  overflow: auto;
+  max-height: 300px;
+  background: white;
+}
+
+#scalate-console div.systemProperties {
+  margin: 10px;
+  overflow: auto;
+  max-height: 300px;
+  background: white;
+}
diff --git a/console/src/main/webapp/css/style.css b/console/src/main/webapp/css/style.css
new file mode 100644
index 0000000..496901e
--- /dev/null
+++ b/console/src/main/webapp/css/style.css
@@ -0,0 +1,1588 @@
+/**
+ * Copyright (C) 2009-2010 the original author or authors.
+ * See the notice.md file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * Licensed 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 {
+  margin: 0;
+  padding: 0;
+}
+
+#cell-0-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-0-1 { height: 1em; width: 85%; }
+#cell-0-2 { background: transparent url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+#cell-1-0 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-1-1 { background: transparent url( '../images/bg02-blue-left.png' ) no-repeat right top; width:13px; }
+#cell-1-2 { background: transparent url( '../images/bg.png' ) repeat-x top; width:85%; }
+#banner { height: 80px; }
+#cell-1-3 { background: transparent url( '../images/bg02-blue-right.png' ) no-repeat left top; width:13px; }
+#cell-1-4 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-2-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-2-1 { height: 1em; width: 85%; }
+#cell-2-2 { background: white url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+#cell-3-0 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-3-1 { background: transparent url( '../images/bg02-blue-left.png' ) no-repeat right top; width:13px; }
+#cell-3-2 { background: transparent url( '../images/bg.png' ) repeat-x top; width:85%; }
+#cell-3-3 { background: transparent url( '../images/bg02-blue-right.png' ) no-repeat left top; width:13px; }
+#cell-3-4 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-4-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-4-1 { height: 1em; width: 85%; }
+#cell-4-2 { background: transparent url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+
+#banner {
+  margin: 0px 20px;
+  padding: 0px 50px 0px 50px;
+  font-size: 200%;
+  text-align: center;
+  background: transparent;
+}
+#top-menu {
+  margin: 0px 25px;
+  padding: 2px;
+  line-height: 100%;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;
+  font-size: 11px;
+  color: white;
+  line-height: 13px;
+  overflow: none;
+}
+#top-menu a:link, #top-menu a:visited {
+  color: #ffffff;
+  text-decoration: none;
+}
+#top-menu a:active, #top-menu a:hover {
+  color: #5b8fbe;
+  text-decoration: underline;
+}
+#top-menu sup img {
+  height: 0px;
+  width: 0px;
+}
+
+#footer {
+  padding: 0px 50px 0px 50px;
+  min-height: 0em;
+  text-align: center;
+  color: white;
+  font-size: 65%;
+  font-family: Verdana, arial, sans-serif;
+}
+#site-footer {
+  margin: 5px;
+}
+#footer a:link, #footer a:visited {
+  color: white;
+  text-decoration: none;
+}
+#footer a:hover {
+  color: white;
+  text-decoration: underline;
+}
+
+#wrapper-menu-page-right {
+  background: transparent url( '../images/left-box-right.png' ) repeat-y right;
+}
+
+#wrapper-menu-page-bottom {
+  background: transparent url( '../images/left-box-bottom.png' ) no-repeat right bottom;
+}
+
+#wrapper-menu-page-top {
+  background: transparent url( '../images/left-box-top.png' ) no-repeat right top;
+}
+
+#menu-page {
+  width: 200px;
+  color: #5b8fbe;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;
+  margin: 0px;
+  padding: 17px 11px 17px 0px;
+  text-align: left;
+  margin-left: 0px;
+  line-height: 1em;
+}
+
+#menu-page ul {
+  margin: 0;
+  padding: 0;
+  padding-left: 35px;
+  font-size: 75%;
+}
+
+#menu-page h3 {
+  font-size: 75%;
+  text-transform: uppercase;
+  margin: 1em 0 0.3em 0;
+  color: #5b8fbe;
+  font-weight: normal;
+  letter-spacing: 0.15em;
+  background: url('../images/big-bullet.png') no-repeat 0pt;
+  background-position:left center;
+  margin-left:15px;
+  padding-left: 20px;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;
+}
+
+#menu-page a:link, #menu-page a:visited {
+  color: black;
+}
+
+#menu-page a:hover {
+  color: #5b8fbe;
+}
+
+#content {
+  padding: 20px 0px 0px 0px;
+  display: block;
+  text-align: left;
+  height: 100%;
+  width: 100%;
+  color: black;
+}
+
+h2 {
+  font-size: 110%;
+}
+
+h3 {
+  font-size: 100%;
+}
+
+a:link, a:visited {
+  color: #5b8fbe;
+  text-decoration: none;
+}
+
+a:hover {
+  color: #666;
+  text-decoration: none;
+}
+
+
+table.align {
+  padding: 0px;
+  border: none;
+}
+
+td.align {
+  padding: 0px;
+  border: none;
+}
+
+/*********************************************************************
+ CSS Elements that are part of the confluence rendered xhtml
+ *********************************************************************/
+.wiki-content {
+	font-family: Verdana, arial, sans-serif;
+	font-size: 11px;
+	line-height: 16px;
+	color: #000000;
+	font-weight: normal;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+/*
+** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
+** use an id=PageContent or class=wiki-content, so we must
+** set the body style to that used for PageContent, and p to that used for wiki-content.
+*/
+
+.monospaceInput {
+    font:12px monospace
+}
+
+.wiki-content p, .commentblock p {
+    margin: 16px 0px 16px 0px;
+    padding: 0px;
+}
+
+.wiki-content-preview {
+    padding: 5px;
+    border-left: 1px solid #3c78b5;
+    border-right: 1px solid #3c78b5;
+}
+
+ul, ol {
+    margin-top: 2px;
+    margin-bottom: 2px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+}
+
+pre {
+    padding: 0px;
+    margin-top: 5px;
+    margin-left: 15px;
+    margin-bottom: 5px;
+    margin-right: 5px;
+    text-align: left;
+}
+
+.helpheading {
+    font-weight: bold;
+    background-color: #D0D9BD;
+        border-bottom: 1px solid #3c78b5;
+        padding: 4px 4px 4px 4px;
+        margin: 0px;
+        margin-top: 10px;
+}
+.helpcontent {
+        padding: 4px 4px 20px 4px;
+    background-color: #f5f7f1;
+}
+
+.code {
+ 	border: 1px dashed #3c78b5;
+    font-size: 11px;
+	font-family: Courier;
+    margin: 10px;
+	line-height: 13px;
+}
+
+.focusedComment {
+    background: #ffffce;
+}
+
+.commentBox, .focusedComment {
+    padding: 10px;
+    margin: 5px 0 5px 0;
+    border: 1px #bbb solid;
+}
+
+.codeHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #3c78b5;
+    padding: 3px;
+	text-align: center;
+}
+
+.codeContent {
+    text-align: left;
+    background-color: #f0f0f0;
+    padding: 3px;
+}
+
+.preformatted {
+ 	border: 1px dashed #3c78b5;
+    font-size: 11px;
+	font-family: Courier;
+    margin: 10px;
+	line-height: 13px;
+}
+
+.preformattedHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #3c78b5;
+    padding: 3px;
+	text-align: center;
+}
+
+.preformattedContent {
+    background-color: #f0f0f0;
+    padding: 3px;
+}
+
+.panel {
+ 	border: 1px dashed #3c78b5;
+    margin: 10px;
+    margin-top: 0px;
+}
+
+.panelHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #3c78b5;
+    padding: 3px;
+	text-align: center;
+}
+
+.panelContent {
+    background-color: #f0f0f0;
+    padding: 5px;
+}
+
+.anonymousAlert {
+    background-color: #f0f0f0;
+ 	border: 1px dashed red;
+    font-size: 11px;
+    padding: 10px 5px 10px 5px;
+    margin: 4px;
+	line-height: 13px;
+}
+
+.lockAlert {
+    background-color: #f0f0f0;
+    width: 50%;
+ 	border: 1px dashed red;
+    font-size: 11px;
+    padding: 10px 5px 10px 5px;
+    margin: 4px;
+	line-height: 13px;
+}
+
+
+.code-keyword {
+  color: #000091;
+  background-color: inherit;
+}
+
+.code-object {
+  color: #910091;
+  background-color: inherit;
+}
+
+.code-quote {
+  color: #009100;
+  background-color: inherit;
+}
+
+.code-comment {
+  color: #808080;
+  background-color: inherit;
+}
+
+
+.code-xml .code-keyword {
+  color: inherit;
+  font-weight: bold;
+}
+
+.code-tag {
+  color: #000091;
+  background-color: inherit;
+}
+
+.breadcrumbs {
+    background-color: #f0f0f0;
+ 	border-color: #3c78b5;
+	border-width: 1px 0px 1px 0px;
+	border-style: solid;
+    font-size: 11px;
+    padding: 3px 0px 3px 0px;
+}
+
+.navmenu {
+    border: 1px solid #ccc;
+}
+
+.menuheading {
+    font-weight: bold;
+    background-color: #f0f0f0;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 4px 4px 2px 4px;
+}
+
+.menuitems {
+	padding: 4px 4px 20px 4px;
+}
+
+.rightpanel {
+    border-left: 1px solid #ccc;
+    border-bottom: 1px solid #ccc;
+}
+
+#helpheading {
+    text-align: left;
+    font-weight: bold;
+    background-color: #D0D9BD;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 4px 4px 4px 4px;
+	margin: 0px;
+}
+#helpcontent {
+	padding: 4px 4px 4px 4px;
+    background-color: #f5f7f1;
+}
+.helptab-unselected {
+    font-weight: bold;
+	padding: 5px;
+    background-color: #f5f7f1;
+}
+.helptab-selected {
+    font-weight: bold;
+    background-color: #D0D9BD;
+	padding: 5px;
+}
+.helptabs {
+    margin: 0px;
+    background-color: #f5f7f1;
+	padding: 5px;
+}
+.infopanel-heading {
+    font-weight: bold;
+	padding: 4px 0px 2px 0px;
+}
+
+.pagebody {
+}
+
+.pageheader {
+	padding: 5px 5px 5px 0px;
+ 	border-bottom: 1px solid #3c78b5;
+}
+
+.steptitle {
+	font-size: 18px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: #003366;
+	margin-bottom: 7px;
+}
+
+.substeptitle {
+    font-size: 12px;
+    font-weight: bold;
+    font-family: Arial, sans-serif;
+    color: #003366;
+    margin: 2px 4px 4px 4px;
+    padding: 2px 4px 1px 4px;
+}
+
+.stepdesc {
+    font-family: Verdana, arial, sans-serif;
+	font-size: 11px;
+	line-height: 16px;
+	font-weight: normal;
+    color: #666666;
+    margin-top: 7px;
+    margin-bottom: 7px;
+}
+
+.steplabel {
+    font-weight: bold;
+    margin-right: 4px;
+    color: black;
+    float: left;
+    width: 15%;
+    text-align: right;
+}
+
+.stepfield {
+    background: #f0f0f0;
+    padding: 5px;
+}
+
+.submitButtons{
+    margin-top:5px;
+    text-align:right;
+}
+
+.formtitle {
+	font-size: 12px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: #003366;
+}
+
+.sectionbottom {
+    border-bottom: 1px solid #3c78b5;
+}
+
+.topRow {
+    border-top: 2px solid #3c78b5;
+}
+
+.tabletitle {
+	font-size: 14px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+    padding: 3px 0px 2px 0px;
+    margin: 8px 4px 2px 0px;
+	color: #003366;
+	border-bottom: 2px solid #3c78b5;
+}
+.pagesubheading {
+    color: #666666;
+    font-size: 10px;
+    padding: 0px 0px 5px 0px;
+}
+
+HR {
+	color: 3c78b5;
+	height: 1;
+}
+
+A:link, A:visited, A:active, A:hover {
+  color: #5b8fbe;
+}
+
+A:hover {
+  text-decoration: underline;
+}
+
+h1 A:link, h1 A:visited, h1 A:active {
+	text-decoration: none;
+}
+
+h1 A:hover {
+    border-bottom: 1px dotted #003366;
+}
+
+.wiki-content > :first-child, .commentblock > :first-child {
+    margin-top: 3px;
+}
+
+.logocell {
+    padding: 10px;
+}
+
+input {
+	font-family: verdana, geneva, arial, sans-serif;
+	font-size: 11px;
+	color: #000000;
+}
+
+textarea, textarea.editor {
+	font-family: verdana, geneva, arial, sans-serif;
+	font-size: 11px;
+	color: #333333;
+}
+
+/* use logoSpaceLink instead.
+.spacenametitle {
+	font: 21px/31px Impact, Arial, Helvetica;
+    font-weight: 100;
+    color: #999999;
+	margin: 0px;
+}
+.spacenametitle img {
+  margin: 0 0 -4px 0;
+}
+.spacenametitle a {
+    text-decoration: none;
+    color: #999999;
+}
+.spacenametitle a:visited {
+    text-decoration: none;
+    color: #999999;
+}*/
+
+.spacenametitle-printable {
+	font: 20px/25px Impact, Arial, Helvetica;
+    font-weight: 100;
+    color: #999999;
+	margin: 0px;
+}
+.spacenametitle-printable a {
+    text-decoration: none;
+    color: #999999;
+}
+.spacenametitle-printable a:visited {
+    text-decoration: none;
+    color: #999999;
+}
+
+.blogDate {
+	font-weight: bold;
+	text-decoration: none;
+	color: black;
+}
+
+.blogSurtitle {
+    background: #f0f0f0;
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.blogHeading {
+    font-size: 20px;
+    line-height: normal;
+    font-weight: bold;
+    padding: 0px;
+    margin: 0px;
+}
+
+.blogHeading a {
+   text-decoration: none;
+   color: black;
+}
+
+.endsection {
+	align: right;
+	color: #666666;
+	margin-top: 10px;
+}
+.endsectionleftnav {
+	align: right;
+	color: #666666;
+	margin-top: 10px;
+}
+
+h1 {
+	font-size: 24px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	color: #003366;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 2px;
+	margin: 36px 0px 4px 0px;
+}
+
+h2 {
+	font-size: 18px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 2px;
+	margin: 27px 0px 4px 0px;
+}
+
+h3 {
+	font-size: 14px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 21px 0px 4px 0px;
+}
+
+h4 {
+	font-size: 12px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 18px 0px 4px 0px;
+}
+
+h4.search {
+	font-size: 12px;
+	line-height: normal;
+	font-weight: normal;
+	background-color: #f0f0f0;
+	padding: 4px;
+	margin: 18px 0px 4px 0px;
+}
+
+h5 {
+	font-size: 10px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 14px 0px 4px 0px;
+}
+
+h6 {
+	font-size: 8px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 14px 0px 4px 0px;
+}
+
+.smallfont {
+    font-size: 10px;
+}
+.descfont {
+    font-size: 10px;
+    color: #666666;
+}
+.smallerfont {
+    font-size: 9px;
+}
+.smalltext {
+    color: #666666;
+    font-size: 10px;
+}
+.smalltext a {
+    color: #666666;
+}
+.smalltext-blue {
+    color: #3c78b5;
+    font-size: 10px;
+}
+.surtitle {
+    margin-left: 1px;
+    margin-bottom: 5px;
+    font-size: 14px;
+    color: #666666;
+}
+
+/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
+.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
+.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
+.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
+.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
+.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
+.navItem a { color: #ffffff; text-decoration: none; }
+.navItem a:hover { color: #ffffff; text-decoration: none; }
+.navItem a:visited { color: #ffffff; text-decoration: none; }
+
+div.padded { padding: 4px; }
+div.thickPadded { padding: 10px; }
+h3.macrolibrariestitle {
+    margin: 0px 0px 0px 0px;
+}
+
+div.centered { text-align: center; margin: 10px; }
+div.centered table {margin: 0px auto; text-align: left; }
+
+.tableview table {
+    margin: 0;
+}
+
+.tableview th {
+    text-align: left;
+    color: #003366;
+    font-size: 12px;
+    padding: 5px 0px 0px 5px;
+    border-bottom: 2px solid #3c78b5;
+}
+.tableview td {
+    text-align: left;
+    border-color: #ccc;
+    border-width: 0px 0px 1px 0px;
+    border-style: solid;
+    margin: 0;
+    padding: 4px 10px 4px 5px;
+}
+
+.grid {
+    margin: 2px 0px 5px 0px;
+    border-collapse: collapse;
+}
+.grid th  {
+    border: 1px solid #ccc;
+    padding: 2px 4px 2px 4px;
+    background: #f0f0f0;
+    text-align: center;
+}
+.grid td  {
+    border: 1px solid #ccc;
+    padding: 3px 4px 3px 4px;
+}
+.gridHover {
+	background-color: #f9f9f9;
+}
+
+td.infocell {
+    background-color: #f0f0f0;
+}
+.label {
+	font-weight: bold;
+	color: #003366;
+}
+.error {
+	background-color: #fcc;
+}
+
+.errorBox {
+	background-color: #fcc;
+    border: 1px solid #c00;
+    padding: 5px;
+    margin: 5px;
+}
+
+.errorMessage {
+	color: #c00;
+}
+
+.success {
+	background-color: #dfd;
+}
+
+.successBox {
+	background-color: #dfd;
+    border: 1px solid #090;
+    padding: 5px;
+    margin-top:5px;
+    margin-bottom:5px;
+}
+
+blockquote {
+	padding-left: 10px;
+	padding-right: 10px;
+	margin-left: 5px;
+	margin-right: 0px;
+	border-left: 1px solid #3c78b5;
+}
+
+table.confluenceTable
+{
+    margin: 5px;
+    border-collapse: collapse;
+}
+
+/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
+table.confluenceTable td.confluenceTd
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+}
+
+/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
+table.confluenceTable th.confluenceTh
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+    background-color: #f0f0f0;
+    text-align: center;
+}
+
+td.confluenceTd
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+}
+
+th.confluenceTh
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+    background-color: #f0f0f0;
+    text-align: center;
+}
+
+DIV.small {
+	font-size: 9px;
+}
+
+H1.pagename {
+	margin-top: 0px;
+}
+
+IMG.inline  {}
+
+.loginform {
+    margin: 5px;
+    border: 1px solid #ccc;
+}
+
+/* The text how the "This is a preview" comment should be shown. */
+.previewnote { text-align: center;
+                font-size: 11px;
+                    color: red; }
+
+/* How the preview content should be shown */
+.previewcontent { background: #E0E0E0; }
+
+/* How the system messages should be shown (DisplayMessage.jsp) */
+.messagecontent { background: #E0E0E0; }
+
+/* How the "This page has been modified..." -comment should be shown. */
+.conflictnote { }
+
+.createlink {
+    color: maroon;
+}
+a.createlink {
+    color: maroon;
+}
+.templateparameter {
+    font-size: 9px;
+    color: darkblue;
+}
+
+.diffadded {
+    background: #ddffdd;
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid darkgreen;
+}
+.diffdeleted {
+    color: #999;
+    background: #ffdddd;
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid darkred;
+}
+.diffnochange {
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid lightgrey;
+}
+.differror {
+    background: brown;
+}
+.diff {
+    font-family: lucida console, courier new, fixed-width;
+	font-size: 12px;
+	line-height: 14px;
+}
+.diffaddedchars {
+    background-color:#99ff99;
+    font-weight:bolder;
+}
+.diffremovedchars {
+    background-color:#ff9999;
+    text-decoration: line-through;
+    font-weight:bolder;
+}
+
+.greybackground {
+    background: #f0f0f0
+}
+
+.greybox {
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.borderedGreyBox {
+    border: 1px solid #cccccc;
+    background-color: #f0f0f0;
+    padding: 10px;
+}
+
+.greyboxfilled {
+ 	border: 1px solid #ddd;
+	padding: 5px;
+	margin: 10px 1px 10px 1px;
+	background: #f0f0f0;
+}
+
+.navBackgroundBox {
+    padding: 5px 5px 5px 5px;
+    font-size: 22px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: white;
+    background: #3c78b5;
+    text-decoration: none;
+}
+
+.previewBoxTop {
+	background-color: #f0f0f0;
+    border-width: 1px 1px 0px 1px;
+    border-style: solid;
+    border-color: #3c78b5;
+    padding: 5px;
+    margin: 5px 0px 0px 0px;
+    text-align: center;
+}
+.previewContent {
+    background-color: #fff;
+ 	border-color: #3c78b5;
+	border-width: 0px 1px 0px 1px;
+	border-style: solid;
+	padding: 10px;
+	margin: 0px;
+}
+.previewBoxBottom {
+	background-color: #f0f0f0;
+    border-width: 0px 1px 1px 1px;
+    border-style: solid;
+    border-color: #3c78b5;
+    padding: 5px;
+    margin: 0px 0px 5px 0px;
+    text-align: center;
+}
+
+.functionbox {
+    background-color: #f0f0f0;
+ 	border: 1px solid #3c78b5;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.functionbox-greyborder {
+    background-color: #f0f0f0;
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.search-highlight {
+    background-color: #ffffcc;
+}
+
+/* normal (white) background */
+.rowNormal {
+    background-color: #ffffff;
+ }
+
+/* alternate (pale yellow) background */
+.rowAlternate {
+    background-color: #f7f7f7;
+}
+
+/* used in the list attachments table */
+.rowAlternateNoBottomColor {
+    background-color: #f7f7f7;
+}
+
+.rowAlternateNoBottomNoColor {
+}
+
+.rowAlternateNoBottomColor td {
+    border-bottom: 0px;
+}
+
+.rowAlternateNoBottomNoColor td {
+    border-bottom: 0px;
+}
+
+/* row highlight (grey) background */
+.rowHighlight {
+    background-color: #f0f0f0;
+
+}
+
+TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+
+TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
+TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }
+
+.toolbar  {
+    margin: 0px;
+    border-collapse: collapse;
+}
+
+.toolbar td  {
+    border: 1px solid #ccc;
+    padding: 2px 2px 2px 2px;
+    color: #ccc;
+}
+
+td.noformatting {
+    border-width: 0px;
+    border-style: none;
+    text-align: center;
+	padding: 0px;
+}
+
+.commentblock {
+    margin: 12px 0 12px 0;
+}
+
+/*
+ * Divs displaying the license information, if necessary.
+ */
+.license-eval, .license-none, .license-nonprofit {
+    border-top: 1px solid #bbbbbb;
+    text-align: center;
+    font-size: 10px;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+}
+
+.license-eval, .license-none {
+    background-color: #ffcccc;
+}
+
+.license-eval b, .license-none b {
+    color: #990000
+}
+
+.license-nonprofit {
+    background-color: #ffffff;
+}
+
+/*
+ * The shadow at the bottom of the page between the main content and the
+ * "powered by" section.
+ */
+.bottomshadow {
+    height: 12px;
+    background-image: url("$req.contextPath/images/border/border_bottom.gif");
+    background-repeat: repeat-x;
+}
+
+/*
+ * Styling of the operations box
+ */
+.navmenu .operations li, .navmenu .operations ul {
+    list-style: none;
+    margin-left: 0;
+    padding-left: 0;
+}
+
+.navmenu .operations ul {
+    margin-bottom: 9px;
+}
+
+.navmenu .label {
+    font-weight: inherit;
+}
+
+/*
+ * Styling of ops as a toolbar
+ */
+.toolbar div {
+    display: none;
+}
+
+.toolbar .label {
+    display: none;
+}
+
+.toolbar .operations {
+    display: block;
+}
+
+.toolbar .operations ul {
+    display: inline;
+    list-style: none;
+    margin-left: 10px;
+    padding-left: 0;
+}
+
+.toolbar .operations li {
+    list-style: none;
+    display: inline;
+}
+
+/* list page navigational tabs */
+#foldertab {
+padding: 3px 0px 3px 8px;
+margin-left: 0;
+border-bottom: 1px solid #3c78b5;
+font: bold 11px Verdana, sans-serif;
+}
+
+#foldertab li {
+list-style: none;
+margin: 0;
+display: inline;
+}
+
+#foldertab li a {
+padding: 3px 0.5em;
+margin-left: 3px;
+border: 1px solid #3c78b5;
+border-bottom: none;
+background: #3c78b5;
+text-decoration: none;
+}
+
+#foldertab li a:link { color: #ffffff; }
+#foldertab li a:visited { color: #ffffff; }
+
+#foldertab li a:hover {
+color: #ffffff;
+background: #003366;
+border-color: #003366;
+}
+
+#foldertab li a.current {
+background: white;
+border-bottom: 1px solid white;
+color: black;
+}
+
+#foldertab li a.current:link { color: black; }
+#foldertab li a.current:visited { color: black; }
+#foldertab li a.current:hover {
+background: white;
+border-bottom: 1px solid white;
+color: black;
+}
+
+/* alphabet list */
+ul#squaretab {
+margin-left: 0;
+padding-left: 0;
+white-space: nowrap;
+font: bold 8px Verdana, sans-serif;
+}
+
+#squaretab li {
+display: inline;
+list-style-type: none;
+}
+
+#squaretab a {
+padding: 2px 6px;
+border: 1px solid #3c78b5;
+}
+
+#squaretab a:link, #squaretab a:visited {
+color: #fff;
+background-color: #3c78b5;
+text-decoration: none;
+}
+
+#squaretab a:hover {
+color: #ffffff;
+background-color: #003366;
+border-color: #003366;
+text-decoration: none;
+}
+
+#squaretab li a#current {
+background: white;
+color: black;
+}
+
+.blogcalendar * {
+    font-family:verdana, arial, sans-serif;
+    font-size:x-small;
+    font-weight:normal;
+    line-height:140%;
+    padding:2px;
+}
+
+
+table.blogcalendar {
+    border: 1px solid #3c78b5;
+}
+
+.blogcalendar th.calendarhead, a.calendarhead {
+    font-size:x-small;
+    font-weight:bold;
+    padding:2px;
+    text-transform:uppercase;
+    background-color: #3c78b5;
+    color: #ffffff;
+    letter-spacing: .3em;
+    text-transform: uppercase;
+}
+
+.calendarhead:visited {color: white;}
+.calendarhead:active {color: white;}
+.calendarhead:hover {color: white;}
+
+.blogcalendar th {
+    font-size:x-small;
+    font-weight:bold;
+    padding:2px;
+    background-color:#f0f0f0;
+}
+
+.blogcalendar td {
+    font-size:x-small;
+    font-weight:normal;
+}
+
+.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
+.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
+.searchItem { padding: 1px 4px 1px 4px; }
+.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }
+
+/* permissions page styles */
+.permissionHeading {
+    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
+}
+.permissionTab {
+    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
+}
+.permissionSuperTab {
+    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
+}
+.permissionCell {
+    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
+}
+
+/* warning panel */
+.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
+/* alert panel */
+.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
+
+/* side menu highlighting (e.g. space content screen) */
+.optionPadded { padding: 2px; }
+.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
+.optionSelected a { font-weight: bold; text-decoration: none; color: black; }
+
+/* information macros */
+.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.informationMacroPadding { padding: 5px 0 0 5px; }
+
+table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
+    border: none;
+}
+
+table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}
+
+/* styles for links in the top bar */
+.topBarDiv a:link {color: #ffffff;}
+.topBarDiv a:visited {color: #ffffff;}
+.topBarDiv a:active {color: #ffffff;}
+.topBarDiv a:hover {color: #ffffff;}
+.topBarDiv {color: #ffffff;}
+
+.topBar {
+    background-color: #003366;
+}
+
+
+/* styles for extended operations */
+.greyLinks a:link {color: #666666; text-decoration:underline;}
+.greyLinks a:visited {color: #666666; text-decoration:underline;}
+.greyLinks a:active {color: #666666; text-decoration:underline;}
+.greyLinks a:hover {color: #666666; text-decoration:underline;}
+.greyLinks {color: #666666; display:block; padding: 10px}
+
+.logoSpaceLink {color: #999999; text-decoration: none}
+.logoSpaceLink a:link {color: #999999; text-decoration: none}
+.logoSpaceLink a:visited {color: #999999; text-decoration: none}
+.logoSpaceLink a:active {color: #999999; text-decoration: none}
+.logoSpaceLink a:hover {color: #003366; text-decoration: none}
+
+/* basic panel (basicpanel.vmd) style */
+.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
+.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
+.basicPanelBody {padding: 5px; margin: 0px}
+
+.separatorLinks a:link {color: white}
+.separatorLinks a:visited {color: white}
+.separatorLinks a:active {color: white}
+
+.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}
+
+div.headerField {
+    float: left;
+    width: auto;
+    height: 100%;
+}
+
+.headerFloat {
+    margin-left: auto;
+    width: 50%;
+}
+
+.headerFloatLeft {
+    float: left;
+    margin-right: 20px;
+    margin-bottom: 10px;
+}
+
+#headerRow {
+    padding: 10px;
+}
+
+div.license-personal {
+   background-color: #003366;
+   color: #ffffff;
+}
+
+div.license-personal a {
+   color: #ffffff;
+}
+
+.greyFormBox {
+    border: 1px solid #cccccc;
+    padding: 5px;
+}
+
+/* IE automatically adds a margin before and after form tags. Use this style to remove that */
+.marginlessForm {
+    margin: 0px;
+}
+
+.openPageHighlight {
+    background-color: #ffffcc;
+    padding: 2px;
+    border: 1px solid #ddd;
+}
+
+.editPageInsertLinks, .editPageInsertLinks a
+{
+    color: #666666;
+    font-weight: bold;
+    font-size: 10px;
+}
+
+/* Style for label heatmap. */
+.top10 a {
+    font-weight: bold;
+    font-size: 2em;
+    color: #003366;
+}
+.top25 a {
+    font-weight: bold;
+    font-size: 1.6em;
+    color: #003366;
+}
+.top50 a {
+    font-size: 1.4em;
+    color: #003366;
+}
+.top100 a {
+    font-size: 1.2em;
+    color: #003366;
+}
+
+.heatmap {
+    list-style:none;
+    width: 95%;
+    margin: 0px auto;
+}
+
+.heatmap a {
+    text-decoration:none;
+}
+
+.heatmap a:hover {
+    text-decoration:underline;
+}
+
+.heatmap li {
+    display: inline;
+}
+
+.minitab {
+padding: 3px 0px 3px 8px;
+margin-left: 0;
+margin-top: 1px;
+margin-bottom: 0px;
+border-bottom: 1px solid #3c78b5;
+font: bold 9px Verdana, sans-serif;
+text-decoration: none;
+float:none;
+}
+.selectedminitab {
+padding: 3px 0.5em;
+margin-left: 3px;
+margin-top: 1px;
+border: 1px solid #3c78b5;
+background: white;
+border-bottom: 1px solid white;
+color: #000000;
+text-decoration: none;
+}
+.unselectedminitab {
+padding: 3px 0.5em;
+margin-left: 3px;
+margin-top: 1px;
+border: 1px solid #3c78b5;
+border-bottom: none;
+background: #3c78b5;
+color: #ffffff;
+text-decoration: none;
+}
+
+a.unselectedminitab:hover {
+color: #ffffff;
+background: #003366;
+border-color: #003366;
+}
+
+a.unselectedminitab:link { color: white; }
+a.unselectedminitab:visited { color: white; }
+
+a.selectedminitab:link { color: black; }
+a.selectedminitab:visited { color: black; }
+
+.linkerror { background-color: #fcc;}
+
+a.labelOperationLink:link {text-decoration: underline}
+a.labelOperationLink:active {text-decoration: underline}
+a.labelOperationLink:visited {text-decoration: underline}
+a.labelOperationLink:hover {text-decoration: underline}
+
+a.newLabel:link {background-color: #ddffdd}
+a.newLabel:active {background-color: #ddffdd}
+a.newLabel:visited {background-color: #ddffdd}
+a.newLabel:hover {background-color: #ddffdd}
+
+ul.square {list-style-type: square}
+
+.inline-control-link {
+    background: #ffc;
+    font-size: 9px;
+    color: #666;
+    padding: 2px;
+    text-transform: uppercase;
+    text-decoration: none;
+}
+
+
+.inline-control-link a:link {text-decoration: none}
+.inline-control-link a:active {text-decoration: none}
+.inline-control-link a:visited {text-decoration: none}
+.inline-control-link a:hover {text-decoration: none}
+
+.inline-control-link {
+    background: #ffc;
+    font-size: 9px;
+    color: #666;
+    padding: 2px;
+    text-transform: uppercase;
+    text-decoration: none;
+    cursor: pointer;
+}
+
+div.auto_complete {
+    width: 350px;
+    background: #fff;
+}
+div.auto_complete ul {
+    border: 1px solid #888;
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    list-style-type: none;
+}
+div.auto_complete ul li {
+    margin: 0;
+    padding: 3px;
+}
+div.auto_complete ul li.selected {
+    background-color: #ffb;
+}
+div.auto_complete ul strong.highlight {
+    color: #800;
+    margin: 0;
+    padding: 0;
+}
+
+/******* Edit Page Styles *******/
+.toogleFormDiv{
+    border:1px solid #A7A6AA;
+    background-color:white;
+    padding:5px;
+    margin-top: 5px;
+}
+
+.toogleInfoDiv{
+    border:1px solid #A7A6AA;
+    background-color:white;
+    display:none;
+    padding:5px;
+    margin-top: 10px;
+}
+
+.inputSection{
+    margin-bottom:20px;
+}
+
+#editBox{
+   border:1px solid lightgray;
+   background-color:#F0F0F0;
+}
+
+/******* Left Navigation Theme Styles ********/
+.leftnav li a {
+    text-decoration:none;
+    color:white;
+    margin:0px;
+    display:block;
+    padding:2px;
+    padding-left:5px;
+    background-color: #3c78b5;
+    border-top:1px solid #3c78b5;
+}
+
+.leftnav li a:active {color:white;}
+.leftnav li a:visited {color:white;}
+.leftnav li a:hover {background-color: #003366; color:white;}
diff --git a/console/src/main/webapp/images/asf-logo.png b/console/src/main/webapp/images/asf-logo.png
new file mode 100644
index 0000000..d824fab
--- /dev/null
+++ b/console/src/main/webapp/images/asf-logo.png
Binary files differ
diff --git a/console/src/main/webapp/images/bg.png b/console/src/main/webapp/images/bg.png
new file mode 100644
index 0000000..878a84f
--- /dev/null
+++ b/console/src/main/webapp/images/bg.png
Binary files differ
diff --git a/console/src/main/webapp/images/bg02-blue-left.png b/console/src/main/webapp/images/bg02-blue-left.png
new file mode 100644
index 0000000..057efdf
--- /dev/null
+++ b/console/src/main/webapp/images/bg02-blue-left.png
Binary files differ
diff --git a/console/src/main/webapp/images/bg02-blue-right.png b/console/src/main/webapp/images/bg02-blue-right.png
new file mode 100644
index 0000000..edf9a9d
--- /dev/null
+++ b/console/src/main/webapp/images/bg02-blue-right.png
Binary files differ
diff --git a/console/src/main/webapp/images/bg02-white-left-nogr.png b/console/src/main/webapp/images/bg02-white-left-nogr.png
new file mode 100644
index 0000000..1c5186c
--- /dev/null
+++ b/console/src/main/webapp/images/bg02-white-left-nogr.png
Binary files differ
diff --git a/console/src/main/webapp/images/bg02-white-right-nogr.png b/console/src/main/webapp/images/bg02-white-right-nogr.png
new file mode 100644
index 0000000..9734def
--- /dev/null
+++ b/console/src/main/webapp/images/bg02-white-right-nogr.png
Binary files differ
diff --git a/console/src/main/webapp/images/big-bullet.png b/console/src/main/webapp/images/big-bullet.png
new file mode 100644
index 0000000..f036db5
--- /dev/null
+++ b/console/src/main/webapp/images/big-bullet.png
Binary files differ
diff --git a/console/src/main/webapp/images/left-box-bottom.png b/console/src/main/webapp/images/left-box-bottom.png
new file mode 100644
index 0000000..0495248
--- /dev/null
+++ b/console/src/main/webapp/images/left-box-bottom.png
Binary files differ
diff --git a/console/src/main/webapp/images/left-box-right.png b/console/src/main/webapp/images/left-box-right.png
new file mode 100644
index 0000000..2698074
--- /dev/null
+++ b/console/src/main/webapp/images/left-box-right.png
Binary files differ
diff --git a/console/src/main/webapp/images/left-box-top.png b/console/src/main/webapp/images/left-box-top.png
new file mode 100644
index 0000000..e1fc26e
--- /dev/null
+++ b/console/src/main/webapp/images/left-box-top.png
Binary files differ
diff --git a/console/src/main/webapp/images/smx-logo.png b/console/src/main/webapp/images/smx-logo.png
new file mode 100644
index 0000000..ce2332a
--- /dev/null
+++ b/console/src/main/webapp/images/smx-logo.png
Binary files differ
diff --git a/console/src/main/webapp/index.jade b/console/src/main/webapp/index.jade
new file mode 100644
index 0000000..803ba34
--- /dev/null
+++ b/console/src/main/webapp/index.jade
@@ -0,0 +1,5 @@
+h1 Apache ServiceMix
+
+:markdown
+  This project contains documentation about Apache ServiceMix 5.
+
diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 0000000..fe753cd
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix</groupId>
+        <artifactId>servicemix-parent</artifactId>
+        <version>5.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix</groupId>
+    <artifactId>servicemix-core</artifactId>
+    <packaging>jar</packaging>
+    <version>5.0.0-SNAPSHOT</version>
+    <name>Apache ServiceMix :: Core</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-scala</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src/main/scala</sourceDirectory>
+        <testSourceDirectory>src/test/scala</testSourceDirectory>
+
+        <plugins>
+            <plugin>
+                <groupId>org.scala-tools</groupId>
+                <artifactId>maven-scala-plugin</artifactId>
+            </plugin>
+        </plugins>
+
+    </build>
+</project>
diff --git a/core/src/main/scala/org/apache/servicemix/core/Breadcrumbs.scala b/core/src/main/scala/org/apache/servicemix/core/Breadcrumbs.scala
new file mode 100644
index 0000000..20a7dba
--- /dev/null
+++ b/core/src/main/scala/org/apache/servicemix/core/Breadcrumbs.scala
@@ -0,0 +1,125 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import org.apache.camel.processor.{DelegateProcessor, DelegateAsyncProcessor}
+import org.apache.camel.processor.aggregate.{AggregationStrategy, AggregateProcessor}
+import collection.Iterable
+import org.apache.camel._
+
+/**
+ * The ServiceMix bread crumb strategy adds a header to the message to ensure we can follow the message throughout
+ * different routes and processors.
+ */
+class Breadcrumbs extends DelegateProcessorFactory {
+
+  import Breadcrumbs._
+
+  def create(delegate: Processor) = new DelegateAsyncProcessor(process(delegate)) {
+    override def process(exchange: Exchange, callback: AsyncCallback) = {
+      if (isEnabled(exchange) && !hasBreadCrumb(exchange)) {
+        addBreadCrumb(exchange)
+      }
+      processNext(exchange, callback)
+    }
+  }
+
+  private def process(delegate: Processor) : Processor = {
+    var p = delegate
+    if (p.isInstanceOf[DelegateProcessor]) {
+      p = p.asInstanceOf[DelegateProcessor].getProcessor
+    }
+    if (p.isInstanceOf[AggregateProcessor]) {
+      val agg = p.asInstanceOf[AggregateProcessor]
+      val oldstrat = agg.getAggregationStrategy
+      val strategy = new AggregationStrategy {
+        def aggregate(oldExchange: Exchange, newExchange: Exchange) : Exchange = {
+          val ex = oldstrat.aggregate(oldExchange, newExchange)
+          if (isEnabled(ex)) {
+            val bcs = if (oldExchange == null) getBreadCrumbs(ex) ++ getBreadCrumbs(newExchange)
+                      else getBreadCrumbs(ex) ++ getBreadCrumbs(oldExchange) ++ getBreadCrumbs(newExchange)
+            setBreadCrumbs(ex, bcs)
+          }
+          ex
+        }
+      }
+      agg.setAggregationStrategy(strategy)
+    }
+    delegate
+  }
+}
+
+object Breadcrumbs extends Switchable {
+
+  /**
+   * ServiceMix bread crumb header name
+   */
+  val SERVICEMIX_BREAD_CRUMB = "ServiceMixBreadCrumb"
+
+  /**
+   * Does the exchange have a ServiceMix bread crumb set?
+   */
+  def hasBreadCrumb(exchange: Exchange) : Boolean = getBreadCrumb(exchange) != null
+
+  /**
+   * Get the ServiceMix bread crumb value for an Exchange  (eventually a comma separated list)
+   */
+  def getBreadCrumb(exchange: Exchange) : String = exchange.getIn.getHeader(SERVICEMIX_BREAD_CRUMB, classOf[String])
+
+  /**
+   * Get the ServiceMix bread crumb values for an Exchange
+   */
+  def getBreadCrumbs(exchange: Exchange) : Set[String] = getBreadCrumbs(getBreadCrumb(exchange))
+
+  def getBreadCrumbs(breadcrumbs: String) : Set[String] = if (breadcrumbs == null) Set[String]() else breadcrumbs.split(",").toSet
+
+  /**
+   * Add a ServiceMix bread crumb to an Exchange
+   */
+  def addBreadCrumb(exchange: Exchange) {
+    setBreadCrumb(exchange, exchange.getContext.getUuidGenerator.generateUuid())
+  }
+
+  /**
+   * Set the ServiceMix bread crumb to an Exchange
+   */
+  def setBreadCrumb(exchange: Exchange, breadcrumb: String) {
+    exchange.getIn.setHeader(SERVICEMIX_BREAD_CRUMB, breadcrumb)
+  }
+
+  /**
+   * Set the ServiceMix bread crumbs to an Exchange
+   */
+  def setBreadCrumbs(exchange: Exchange, breadcrumbs: Iterable[String]) {
+    setBreadCrumb(exchange, breadcrumbs.mkString(","))
+  }
+
+  /**
+   * Enable bread crumbs on the ServiceMix Container
+   */
+  def register(container: ServiceMixContainer = ServiceMixContainer.instance) {
+    container.register(classOf[Breadcrumbs])
+  }
+
+  /**
+   * Disable bread crumbs on the ServiceMix Container
+   */
+  def unregister(container: ServiceMixContainer = ServiceMixContainer.instance) {
+    container.unregister(classOf[Breadcrumbs])
+  }
+
+}
diff --git a/core/src/main/scala/org/apache/servicemix/core/DelegateProcessorFactory.scala b/core/src/main/scala/org/apache/servicemix/core/DelegateProcessorFactory.scala
new file mode 100644
index 0000000..3b6e3d4
--- /dev/null
+++ b/core/src/main/scala/org/apache/servicemix/core/DelegateProcessorFactory.scala
@@ -0,0 +1,31 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import org.apache.camel.{AsyncProcessor, Processor}
+
+/**
+ * Trait to allow creating delegate processor on demand
+ */
+trait DelegateProcessorFactory {
+
+  /**
+   * Create a new AsyncProcessor instance that can delegate part of its work to the Processor instance provided
+   */
+  def create(delegate: Processor) : AsyncProcessor
+
+}
\ No newline at end of file
diff --git a/core/src/main/scala/org/apache/servicemix/core/GlobalProcessorFactory.scala b/core/src/main/scala/org/apache/servicemix/core/GlobalProcessorFactory.scala
new file mode 100644
index 0000000..79e420f
--- /dev/null
+++ b/core/src/main/scala/org/apache/servicemix/core/GlobalProcessorFactory.scala
@@ -0,0 +1,87 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import org.apache.camel.spi.{RouteContext, ProcessorFactory}
+import org.apache.camel.model.ProcessorDefinition
+import java.util.concurrent.atomic.AtomicInteger
+import collection.mutable.ListBuffer
+import org.apache.camel._
+import processor.DelegateAsyncProcessor
+import GlobalProcessorFactory._
+
+/**
+ * Global ServiceMix ProcessorFactory implementation, which will take care of wrapping processors with the additional
+ * functionality provided by the {@link DelegateProcessorFactory} instances
+ */
+class GlobalProcessorFactory extends ProcessorFactory {
+
+  val factories = new ListBuffer[DelegateProcessorFactory]
+  val version = new AtomicInteger(1)
+
+  def addFactory(factory: DelegateProcessorFactory) = triggerUpdate(factories += factory);
+  def removeFactory(factory: DelegateProcessorFactory) = triggerUpdate(factories -= factory);
+
+  def createChildProcessor(context: RouteContext, definition: ProcessorDefinition[_], mandatory: Boolean) = {
+    nullOrElse(context.createProcessor(definition))(new GlobalDelegateProcessor(context, definition, _))
+  }
+
+  def createProcessor(context: RouteContext, definition: ProcessorDefinition[_]) = {
+    nullOrElse(definition.createProcessor(context))(new GlobalDelegateProcessor(context, definition, _))
+  }
+
+  def triggerUpdate(block: => Unit) = {
+    block
+    version.incrementAndGet()
+  }
+
+  class GlobalDelegateProcessor(routeContext: RouteContext, definition: ProcessorDefinition[_], target: Processor) extends DelegateAsyncProcessor(target) {
+
+    var currentProcessor = configure(getProcessor)
+    var version = GlobalProcessorFactory.this.version.get()
+
+    override def process(exchange: Exchange, callback: AsyncCallback) = {
+      // let's check if processor factories have changed and reconfigure things if necessary
+      if (version < GlobalProcessorFactory.this.version.get) {
+        currentProcessor = configure(getProcessor)
+      }
+
+      currentProcessor.process(exchange, callback)
+    }
+
+    override def toString = "ServiceMix Wrapper[" + processor + "]"
+
+    def configure(original: AsyncProcessor) : AsyncProcessor = {
+      factories.foldLeft(original) { (delegate: AsyncProcessor, factory: DelegateProcessorFactory) => {
+          factory.create(delegate)
+        }
+      }
+    }
+
+  }
+}
+
+object GlobalProcessorFactory {
+
+  private def nullOrElse[S,T](value: S)(function: S => T) = if (value == null) {
+    null.asInstanceOf[T]
+  } else {
+    function(value)
+  }
+
+}
+
diff --git a/core/src/main/scala/org/apache/servicemix/core/ProfilerStrategy.scala b/core/src/main/scala/org/apache/servicemix/core/ProfilerStrategy.scala
new file mode 100644
index 0000000..c830e5f
--- /dev/null
+++ b/core/src/main/scala/org/apache/servicemix/core/ProfilerStrategy.scala
@@ -0,0 +1,103 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import org.apache.camel._
+import model.{RouteDefinition, ProcessorDefinition}
+import processor.DelegateAsyncProcessor
+import spi.{RouteContext, ProcessorFactory}
+import collection.mutable.LinkedHashMap
+
+class ProfilerStrategy extends ProcessorFactory {
+
+  val proc = new LinkedHashMap[ProcessorDefinition[_], Stats]
+
+  def createProcessor(routeContext: RouteContext, definition: ProcessorDefinition[_]) : Processor = {
+    val proc = definition.createProcessor(routeContext)
+    if (proc != null) {
+      new ProcessorWrapper(routeContext.getCamelContext, definition, proc, getStats(definition))
+    } else {
+      null
+    }
+  }
+
+  def createChildProcessor(routeContext: RouteContext, definition: ProcessorDefinition[_], mandatory: Boolean) : Processor = {
+    val proc = routeContext.createProcessor(definition)
+    if (proc != null) {
+      new ProcessorWrapper(routeContext.getCamelContext, definition, proc, getStats(definition))
+    } else {
+      null
+    }
+  }
+
+  def getStats(definition: ProcessorDefinition[_]) : Stats = {
+    if (definition == null) {
+      null
+    } else {
+      proc.getOrElseUpdate(definition, new Stats(definition, getStats(definition.getParent())))
+    }
+  }
+
+  class ProcessorWrapper(context: CamelContext, definition: ProcessorDefinition[_], target: Processor, stats: Stats) extends DelegateAsyncProcessor(target) {
+    override def process(exchange: Exchange, callback: AsyncCallback) : Boolean = {
+      val t0 = System.nanoTime()
+      try {
+        super.process(exchange, callback)
+      } finally {
+        val t1 = System.nanoTime()
+        stats.addTime(t1 - t0)
+      }
+    }
+    override def toString: String = {
+      "ProfilerWrapper[" + processor + "]"
+    }
+  }
+
+}
+
+class Stats(_definition: ProcessorDefinition[_], _parent : Stats) {
+  var count : Long = 0
+  var time : Long = 0
+  var total : Long = 0
+  def parent = _parent
+  def definition = _definition
+
+  def addTime(nanos: Long) {
+    count = count + 1
+    time = time + nanos
+    total = total + nanos
+    if (parent != null) {
+      parent.addChildTime(nanos)
+    }
+  }
+
+  def timeIncludesChildren() = {
+    definition.getClass != classOf[RouteDefinition]
+  }
+
+  def addChildTime(nanos: Long) {
+    if (timeIncludesChildren()) {
+      time = time - nanos
+    } else {
+      total = total + nanos
+      if (parent != null) {
+        parent.addChildTime(nanos)
+      }
+    }
+  }
+}
+
diff --git a/core/src/main/scala/org/apache/servicemix/core/ServiceMixContainer.scala b/core/src/main/scala/org/apache/servicemix/core/ServiceMixContainer.scala
new file mode 100644
index 0000000..782fe74
--- /dev/null
+++ b/core/src/main/scala/org/apache/servicemix/core/ServiceMixContainer.scala
@@ -0,0 +1,52 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import org.apache.camel.spi.Container
+import org.apache.camel._
+
+class ServiceMixContainer extends Container {
+
+  val processorFactory = new GlobalProcessorFactory
+
+  def manage(camelContext: CamelContext) {
+    if (camelContext.getProcessorFactory == null) {
+      camelContext.setProcessorFactory(processorFactory)
+    }
+  }
+  def register(factory: Class[_ <: DelegateProcessorFactory]) {
+    if (processorFactory.factories.filter(_.getClass == factory).isEmpty) {
+      processorFactory.addFactory(factory.newInstance())
+    }
+  }
+  def unregister(factory: Class[_ <: DelegateProcessorFactory]) {
+    for (f <- processorFactory.factories.filter(_.getClass == factory)) {
+      processorFactory.removeFactory(f)
+    }
+  }
+
+}
+
+object ServiceMixContainer {
+
+  val instance = new ServiceMixContainer
+
+  def init() {
+    Container.Instance.set(instance)
+  }
+
+}
\ No newline at end of file
diff --git a/core/src/main/scala/org/apache/servicemix/core/Switchable.scala b/core/src/main/scala/org/apache/servicemix/core/Switchable.scala
new file mode 100644
index 0000000..73ebcda
--- /dev/null
+++ b/core/src/main/scala/org/apache/servicemix/core/Switchable.scala
@@ -0,0 +1,70 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import collection.mutable.HashMap
+import org.apache.camel.{Route, Exchange, CamelContext}
+
+trait Switchable {
+
+  def enable() {
+    global = true
+  }
+
+  def disable() {
+    global = false
+  }
+
+  def enable(camelContext: CamelContext) {
+    perContext += camelContext.getName -> true
+  }
+
+  def disable(camelContext: CamelContext) {
+    perContext += camelContext.getName -> false
+  }
+
+  def clear(camelContext: CamelContext) {
+    perContext -= camelContext.getName
+  }
+
+  def enable(route: Route) {
+    perRoute += route.getId -> true
+  }
+
+  def disable(route: Route) {
+    perRoute += route.getId -> false
+  }
+
+  def clear(route: Route) {
+    perRoute -= route.getId
+  }
+
+  def reset() {
+    global = true
+    perContext.clear()
+    perRoute.clear()
+  }
+
+  def isEnabled(exchange: Exchange) : Boolean = isRouteEnabled(exchange).getOrElse(isContextEnabled(exchange).getOrElse(global))
+  def isContextEnabled(exchange: Exchange): Option[Boolean] = perContext.get(exchange.getContext.getName)
+  def isRouteEnabled(exchange: Exchange): Option[Boolean] = if (exchange.getFromRouteId != null) perRoute.get(exchange.getFromRouteId) else Some(true)
+
+  private var global: Boolean = true
+  private val perContext = new HashMap[String, Boolean]
+  private val perRoute = new HashMap[String, Boolean]
+
+}
\ No newline at end of file
diff --git a/core/src/test/resources/log4j.properties b/core/src/test/resources/log4j.properties
new file mode 100644
index 0000000..3c8e4d1
--- /dev/null
+++ b/core/src/test/resources/log4j.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2011, FuseSource Corp.  All rights reserved.
+# http://fusesource.com
+#
+# The software in this package is published under the terms of the
+# CDDL license a copy of which has been included with this distribution
+# in the license.txt file.
+#
+
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=DEBUG, console, file
+
+# Console will only display warnnings
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%-5p | %t | %m%n
+log4j.appender.console.threshold=WARN
+
+# File appender will contain all info messages
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d | %-5p | %m | %c | %t%n
+log4j.appender.file.file=target/test.log
+log4j.appender.file.append=true
diff --git a/core/src/test/scala/org/apache/servicemix/core/BreadcrumbsTest.scala b/core/src/test/scala/org/apache/servicemix/core/BreadcrumbsTest.scala
new file mode 100644
index 0000000..1ca928d
--- /dev/null
+++ b/core/src/test/scala/org/apache/servicemix/core/BreadcrumbsTest.scala
@@ -0,0 +1,164 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import _root_.scala.Predef._
+import org.junit.runner.RunWith
+import org.scalatest.junit.JUnitRunner
+import collection.immutable.List
+import org.apache.camel.component.mock.MockEndpoint
+import org.apache.camel.scala.dsl.builder.{RouteBuilderSupport, RouteBuilder}
+
+import scala.collection.JavaConversions.asScalaBuffer
+import org.apache.camel.impl.{DefaultCamelContext, DefaultProducerTemplate}
+
+import org.apache.servicemix.core.Breadcrumbs.{hasBreadCrumb, getBreadCrumb, getBreadCrumbs}
+import org.scalatest.{BeforeAndAfterEach, BeforeAndAfterAll, FunSuite}
+import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy
+
+@RunWith(classOf[JUnitRunner])
+class BreadcrumbsTest extends FunSuite with RouteBuilderSupport with BeforeAndAfterAll with BeforeAndAfterEach {
+
+  val messages = List("<gingerbread/>", "<cakes/>", "<sugar/>")
+
+  lazy val context = {
+    val result = new DefaultCamelContext()
+    result.addRoutes(createRouteBuilder())
+    result.start()
+    result
+  }
+
+  lazy val template = {
+    val result = new DefaultProducerTemplate(context);
+    result.start()
+    result
+  }
+
+
+  override protected def beforeEach() {
+    Breadcrumbs.reset()
+  }
+
+  override protected def beforeAll() {
+    ServiceMixContainer.init()
+    Breadcrumbs.register()
+  }
+
+  override protected def afterAll() {
+    template.stop()
+    context.stop()
+    Breadcrumbs.unregister()
+  }
+
+  test("add breadcrumbs to message headers") {
+    for (body <- messages) {
+      template.sendBody("direct:test", body)
+    }
+
+    val hansel = getMockEndpoint("mock:hansel")
+    hansel.expectedMessageCount(messages.size)
+
+    val gretel = getMockEndpoint("mock:gretel")
+    gretel.expectedMessageCount(messages.size)
+
+    List(hansel, gretel).foreach(_.assertIsSatisfied())
+
+    val hansels = for (exchange <- hansel.getExchanges) yield getBreadCrumb(exchange)
+    assert(hansels.toSet.size == 3, "We should have distinct breadcrumbs per message")
+
+    val gretels = for (exchange <- gretel.getExchanges) yield getBreadCrumb(exchange)
+    assert(hansels == gretels, "Gretel should be able to find all of Hansel's bread crumbs")
+  }
+
+  test("bread crumb strategy can be disabled if necessary") {
+    for (body <- messages) {
+      template.sendBody("direct:test", body)
+    }
+
+    val hansel = getMockEndpoint("mock:hansel")
+    hansel.expectedMessageCount(messages.size)
+
+    val gretel = getMockEndpoint("mock:gretel")
+    gretel.expectedMessageCount(messages.size)
+
+    List(hansel, gretel).foreach(_.assertIsSatisfied())
+
+    val hansels = for (exchange <- hansel.getExchanges) yield getBreadCrumb(exchange)
+    assert(hansels.toSet.size == messages.size, "We should have distinct breadcrumbs per message")
+
+    val gretels = for (exchange <- gretel.getExchanges) yield getBreadCrumb(exchange)
+    assert(hansels == gretels, "Gretel should be able to find all of Hansel's bread crumbs")
+
+    // let's now disable the bread crumbs and just continue with same context/processors/...
+    Breadcrumbs.disable(context)
+    MockEndpoint.resetMocks(context)
+
+    for (body <- messages) {
+      template.sendBody("direct:test", body)
+    }
+
+    hansel.expectedMessageCount(messages.size)
+
+    gretel.expectedMessageCount(messages.size)
+
+    List(hansel, gretel).foreach(_.assertIsSatisfied())
+
+    for (exchange <- hansel.getExchanges)
+      assert(!hasBreadCrumb(exchange), "There should be no more bread crumbs here")
+
+    for (exchange <- gretel.getExchanges)
+      assert(!hasBreadCrumb(exchange), "There should be no more bread crumbs here")
+  }
+
+  test("bread crumb strategy with aggregator") {
+    for (body <- messages) {
+      template.sendBody("direct:aggregate", body)
+    }
+
+    val aggres = getMockEndpoint("mock:aggres")
+    aggres.expectedMessageCount(1)
+    aggres.assertIsSatisfied()
+
+    val exchange = aggres.getExchanges.get(0)
+    val bcs = getBreadCrumbs(exchange)
+    expect(messages.size, "The number of breadcrumbs from the aggregator is wrong")(bcs.size)
+  }
+
+
+  override protected def afterEach() {
+    MockEndpoint.resetMocks(context)
+    context.getProcessorFactory.asInstanceOf[GlobalProcessorFactory].factories.clear
+  }
+
+  def getMockEndpoint(name: String) = context.getEndpoint(name, classOf[MockEndpoint])
+
+  def createRouteBuilder() = new RouteBuilder {
+      "direct:aggregate" ==> {
+        aggregate (true, new UseLatestAggregationStrategy()).completionSize(messages.size) {
+          to("mock:aggres")
+        }
+      }
+
+      "direct:test" ==> {
+        to("mock:hansel")
+        to("seda:forest")
+      }
+
+      "seda:forest" to "mock:gretel"
+
+    }
+}
\ No newline at end of file
diff --git a/core/src/test/scala/org/apache/servicemix/core/ProfilerStrategyTest.scala b/core/src/test/scala/org/apache/servicemix/core/ProfilerStrategyTest.scala
new file mode 100644
index 0000000..ba73322
--- /dev/null
+++ b/core/src/test/scala/org/apache/servicemix/core/ProfilerStrategyTest.scala
@@ -0,0 +1,109 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import _root_.scala.Predef._
+import org.junit.runner.RunWith
+import org.scalatest.junit.JUnitRunner
+import org.scalatest.{BeforeAndAfterEach, BeforeAndAfterAll, FunSuite}
+import org.apache.camel.scala.dsl.builder.RouteBuilder
+import org.apache.camel.impl.{DefaultProducerTemplate, DefaultCamelContext}
+import org.apache.camel.model.ProcessorDefinition
+import collection.mutable.Map
+import collection.immutable.List
+import java.util.concurrent.TimeUnit
+import org.apache.camel.{Exchange, ProducerTemplate}
+
+@RunWith(classOf[JUnitRunner])
+class ProfilerStrategyTest extends FunSuite with BeforeAndAfterAll with BeforeAndAfterEach {
+
+  override protected def beforeAll() {
+  }
+
+  override protected def afterAll() {
+
+  }
+
+  def sleep() {
+    Thread.sleep(2)
+  }
+
+  test("testCamel") {
+
+    val context = new DefaultCamelContext();
+    context.addRoutes(new RouteBuilder {
+      "direct:a" ==> {
+        to("mock:polyglot")
+        choice {
+          when( (e: Exchange) => { sleep(); e.in == "<hello/>" }) {
+            to ("mock:english")
+          }
+          when(_.in == "<hallo/>") {
+            to("mock:dutch")
+            delay( 2 ms )
+            to("mock:german")
+          }
+          otherwise to ("mock:french")
+        }
+      }
+    });
+
+    val strategy = new ProfilerStrategy
+    context.setProcessorFactory(strategy)
+    context.start()
+
+    val template : ProducerTemplate = new DefaultProducerTemplate(context)
+
+    template.start()
+    val values = List("<hello/>", "<hallo/>", "<bonjour/>")
+    val rnd = new scala.util.Random
+
+    val t0 = System.nanoTime()
+    for (i <- 0 until 1000) {
+      template.sendBody("direct:a", values(rnd.nextInt(values.size)))
+    }
+    val t1 = System.nanoTime()
+    System.out.println("Total time: " + TimeUnit.MILLISECONDS.convert(t1 - t0, TimeUnit.NANOSECONDS))
+
+    print(strategy.proc)
+  }
+
+  def print(proc: Map[ProcessorDefinition[_], Stats]) {
+    System.out.println("%-40s %8s %8s %8s".format("Processor", "Count", "Time", "Total"))
+    print(proc, null, "")
+  }
+
+  def print(proc: Map[ProcessorDefinition[_], Stats], parent: Stats, indent: String) {
+    for ((p, s) <- proc) {
+      if (s.parent == parent) {
+        var name = indent + p.toString
+        val max = 40
+        if (name.length() > max) {
+          name = name.substring(0, max - 4) + "...]"
+        } else {
+          while (name.length() < max) {
+            name = name + " "
+          }
+        }
+
+        System.out.println("%s %8d %8d %8d".format(name, s.count, TimeUnit.MILLISECONDS.convert(s.time, TimeUnit.NANOSECONDS), TimeUnit.MILLISECONDS.convert(s.total, TimeUnit.NANOSECONDS)))
+        print(proc, s, indent + "  ")
+      }
+    }
+  }
+
+}
\ No newline at end of file
diff --git a/core/src/test/scala/org/apache/servicemix/core/SwitchableTest.scala b/core/src/test/scala/org/apache/servicemix/core/SwitchableTest.scala
new file mode 100644
index 0000000..02b2b98
--- /dev/null
+++ b/core/src/test/scala/org/apache/servicemix/core/SwitchableTest.scala
@@ -0,0 +1,88 @@
+/**
+ * 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.
+ */
+package org.apache.servicemix.core
+
+import org.junit.runner.RunWith
+import org.scalatest.junit.JUnitRunner
+import org.scalatest.{BeforeAndAfterEach, BeforeAndAfterAll, FunSuite}
+import org.apache.camel.scala.dsl.builder.{RouteBuilder, RouteBuilderSupport}
+import org.apache.camel.impl._
+
+@RunWith(classOf[JUnitRunner])
+class SwitchableTest extends FunSuite with RouteBuilderSupport with BeforeAndAfterAll with BeforeAndAfterEach {
+
+  lazy val context = {
+    val ctx = new DefaultCamelContext()
+    ctx.setName("contextId")
+    ctx.addRoutes(new RouteBuilder() { "direct:a" --> "direct:b" routeId("routeId") })
+    ctx.start()
+    ctx
+  }
+  lazy val route = context.getRoutes.get(0)
+  lazy val exchange = {
+    val ex = new DefaultExchange(context)
+    ex.setFromRouteId(route.getId)
+    ex
+  }
+  lazy val switchable = new Switchable() {}
+
+  override def beforeEach() {
+    switchable.reset()
+  }
+
+  test("global level") {
+    switchable.reset()
+    assert(switchable.isEnabled(exchange))
+
+    switchable.disable()
+    assert(!switchable.isEnabled(exchange))
+  }
+
+  test("context level") {
+    switchable.disable()
+    switchable.enable(context)
+    assert(switchable.isEnabled(exchange))
+
+    switchable.clear(context)
+    assert(!switchable.isEnabled(exchange))
+
+    switchable.enable()
+    assert(switchable.isEnabled(exchange))
+
+    switchable.disable(context)
+    assert(!switchable.isEnabled(exchange))
+  }
+
+  test("route level") {
+    switchable.disable()
+    switchable.enable(route)
+    assert(switchable.isEnabled(exchange))
+
+    switchable.clear(route)
+    assert(!switchable.isEnabled(exchange))
+
+    switchable.enable()
+    assert(switchable.isEnabled(exchange))
+
+    switchable.disable(route)
+    assert(!switchable.isEnabled(exchange))
+
+    switchable.enable(context)
+    assert(!switchable.isEnabled(exchange))
+  }
+
+}
\ No newline at end of file
diff --git a/manual/pom.xml b/manual/pom.xml
new file mode 100644
index 0000000..0beb72f
--- /dev/null
+++ b/manual/pom.xml
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix</groupId>
+        <artifactId>servicemix-parent</artifactId>
+        <version>5.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix</groupId>
+    <artifactId>servicemix-manual</artifactId>
+    <packaging>war</packaging>
+    <version>5.0.0-SNAPSHOT</version>
+    <name>Apache ServiceMix :: Manual</name>
+
+    <properties>
+        <jetty-port>8080</jetty-port>
+        <must-succeed>false</must-succeed>
+        <manual.dir>${project.build.directory}/manual</manual.dir>
+        <manual>${manual.dir}/manual-${project.version}</manual>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.fusesource.scalate</groupId>
+            <artifactId>scalate-wikitext</artifactId>
+            <version>${scalate-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>0.9.24</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-compiler</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src/main/scala</sourceDirectory>
+
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>false</filtering>
+            </resource>
+        </resources>
+
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>filter</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/webapp</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/webapp</directory>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>cmdhelp-maven-plugin</artifactId>
+                <version>${karaf-version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-commands</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>cmdhelp</goal>
+                        </goals>
+                        <configuration>
+                            <format>conf</format>
+                            <targetFolder>${project.build.directory}/webapp/commands/</targetFolder>
+                            <classLoader>plugin</classLoader>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <!-- Commands for help generation -->
+                    <!-- Additional Required Dependencies -->
+                    <dependency>
+                        <groupId>org.osgi</groupId>
+                        <artifactId>org.osgi.core</artifactId>
+                        <version>${osgi-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.osgi</groupId>
+                        <artifactId>org.osgi.compendium</artifactId>
+                        <version>${osgi-version}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+            <plugin>
+                <groupId>org.fusesource.scalate</groupId>
+                <artifactId>maven-scalate-plugin</artifactId>
+                <version>${scalate-version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-htmls</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>sitegen</goal>
+                        </goals>
+                        <configuration>
+                            <warSourceDirectory>${project.build.directory}/webapp</warSourceDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+                <configuration>
+                    <remoteServerId>people.apache.org</remoteServerId>
+                    <remoteServerUrl>scp://people.apache.org/www/servicemix.apache.org/manual/${project.version}</remoteServerUrl>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.maven.wagon</groupId>
+                        <artifactId>wagon-ssh</artifactId>
+                        <version>${maven-wagon-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.fusesource.wikitext</groupId>
+                        <artifactId>confluence-core</artifactId>
+                        <version>${wikitext-version}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.2</version>
+                <executions>
+                    <execution>
+                        <id>attach-manual</id>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <mkdir dir="${manual.dir}" />
+                                <move file="${project.build.directory}/sitegen/manual.html" tofile="${manual}.html" />
+                                <echo message="Generating PDF using Prince XML (http://www.princexml.com/)" />
+                                <exec executable="prince">
+                                    <arg value="${manual}.html" />
+                                    <arg value="${manual}.pdf" />
+                                    <arg value="--log" />
+                                    <arg value="${project.build.directory}/prince.log" />
+                                </exec>
+                            </tasks>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.5</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${project.build.directory}/webapp</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>${manual}.pdf</file>
+                                    <type>pdf</type>
+                                </artifact>
+                                <artifact>
+                                    <file>${manual}.html</file>
+                                    <type>html</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1</version>
+                <configuration>
+                    <webResources>
+                        <resource>
+                            <directory>${project.build.directory}/webapp/</directory>
+                        </resource>
+                    </webResources>
+                    <archive>
+                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <version>7.1.5.v20100705</version>
+                <configuration>
+                    <!-- When editing the conf files, you can comment this line to run
+                        mvn jetty:run
+                       to have a live web site
+                    -->
+                    <webAppSourceDirectory>${jetty-war-dir}</webAppSourceDirectory>
+
+                    <systemProperties>
+                        <systemProperty>
+                            <name>scalate.editor</name>
+                            <value>${scalate.editor}</value>
+                        </systemProperty>
+                        <systemProperty>
+                            <name>scalate.workdir</name>
+                            <value>${scalate.workdir}</value>
+                        </systemProperty>
+                        <systemProperty>
+                            <name>scalate.mode</name>
+                            <value>${scalate.mode}</value>
+                        </systemProperty>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>bundle-manifest</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>manifest</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <supportedProjectTypes>
+                        <supportedProjectType>jar</supportedProjectType>
+                        <supportedProjectType>bundle</supportedProjectType>
+                        <supportedProjectType>war</supportedProjectType>
+                    </supportedProjectTypes>
+                    <instructions>
+                        <Import-Package>
+                            javax.servlet,
+                            javax.servlet.http,
+                            org.osgi.framework,
+                            org.osgi.service.packageadmin,
+                            javax.swing.tree,
+                            org.apache.commons.logging;provider=paxlogging;resolution:=optional,
+                            org.apache.log4j;provider=paxlogging;resolution:=optional,
+                            org.slf4j;provider=paxlogging;resolution:=optional;version="[1.5,2)",
+                        </Import-Package>
+                        <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
+                        <Embed-Directory>WEB-INF/lib</Embed-Directory>
+                        <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
+                        <Embed-Transitive>true</Embed-Transitive>
+                        <Webapp-Context>/karaf-doc</Webapp-Context>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/manual/src/main/webapp/.livereload b/manual/src/main/webapp/.livereload
new file mode 100644
index 0000000..b185045
--- /dev/null
+++ b/manual/src/main/webapp/.livereload
@@ -0,0 +1,19 @@
+# Lines starting with pound sign (#) are ignored.
+
+# additional extensions to monitor
+#config.exts << 'haml'
+
+# exclude files with NAMES matching this mask
+#config.exclusions << '~*'
+# exclude files with PATHS matching this mask (if the mask contains a slash)
+#config.exclusions << '/excluded_dir/*'
+# exclude files with PATHS matching this REGEXP
+#config.exclusions << /somedir.*(ab){2,4}.(css|js)$/
+
+# reload the whole page when .js changes
+#config.apply_js_live = false
+# reload the whole page when .css changes
+#config.apply_css_live = false
+
+# wait 100ms for more changes before reloading a page
+#config.grace_period = 0.1
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml b/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
new file mode 100644
index 0000000..c9da696
--- /dev/null
+++ b/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
@@ -0,0 +1,116 @@
+-#
+-# Copyright (C) 2009-2010 the original author or authors.
+-# See the notice.md file distributed with this work for additional
+-# information regarding copyright ownership.
+-#
+-# Licensed 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.
+-#
+
+-@ var body: String
+-@ var title : String = "Apache Karaf ${pom.version} Guide"
+- response.setContentType("text/html")
+
+-# Only include the console if it's available and the engine is in dev mode.
+- val include_console = engine.isDevelopmentMode && engine.resourceLoader.exists("/org/fusesource/scalate/console/console_head.scaml")
+
+!!! Basic
+%html(lang="en")
+  %head
+    %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
+    %meta(name="description" content="description goes here")
+    %meta(name="keywords" content="keywords,goes,here")
+    %meta(name="author" content="The Apache Karaf Team")
+
+    - if (include_console)
+      = include("/org/fusesource/scalate/console/console_head.scaml")
+
+    %link(href={uri("/css/style.css")} rel="stylesheet" type="text/css")
+    %link(href={uri("/css/pygmentize.css")} rel="stylesheet" type="text/css")
+
+    - if (include_console)
+      %link(href={uri("/css/scalate/console.css")} rel="stylesheet" type="text/css")
+
+    %title
+      = title
+  
+  %body
+    %table{:width => "100%", :cellpadding => "0", :cellspacing => "0"}
+      %tr{:width => "100%"}
+        %td#cell-0-0{:colspan => "2"}
+          &nbsp;
+        %td#cell-0-1
+          &nbsp;
+        %td#cell-0-2{:colspan => "2"}
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-1-0
+          &nbsp;
+        %td#cell-1-1
+          &nbsp;
+        %td#cell-1-2
+          %div{:style => "padding: 5px;"}
+            #banner
+              = include("/_banner.ssp")
+            #top-menu
+              %table{:border => "0", :cellpadding => "1", :cellspacing => "0", :width => "100%"}
+                %tr
+                  %td
+                    %div{:align => "left"}
+                  %td
+                    %div{:align => "right"}
+                      = include("/_quicklinks.ssp")
+        %td#cell-1-3
+          &nbsp;
+        %td#cell-1-4
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-2-0{:colspan => "2"}
+          &nbsp;
+        %td#cell-2-1
+          %table
+            %tr{:height => "100%", :valign => "top"}
+              %td{:height => "100%"}
+                #wrapper-menu-page-right
+                  #wrapper-menu-page-top
+                    #wrapper-menu-page-bottom
+                      #menu-page
+                        = include("/_navigation.conf")
+              %td{:height =>"100%", :width => "100%"}
+                .wiki-content
+                  !~~ body
+        %td#cell-2-2{:colspan => "2"}
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-3-0
+          &nbsp;
+        %td#cell-3-1
+          &nbsp;
+        %td#cell-3-2
+          #footer
+            #site-footer
+              &copy; 2008-2011 The Apache Software Foundation
+              %br
+              Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+        %td#cell-3-3
+          &nbsp;
+        %td#cell-3-4
+          &nbsp;
+      %tr{:width => "100%"}
+        %td#cell-4-0{:colspan => "2"}
+          &nbsp;
+        %td#cell-4-1
+          &nbsp;
+        %td#cell-4-2{:colspan => "2"}
+          &nbsp;
+    - if (include_console)
+      = include("/org/fusesource/scalate/console/console.scaml")
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp b/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
new file mode 100644
index 0000000..41c0720
--- /dev/null
+++ b/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
@@ -0,0 +1,817 @@
+<%--
+Copyright (C) 2009-2010 the original author or authors.
+See the notice.md file distributed with this work for additional
+information regarding copyright ownership.
+
+Licensed 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.
+--%>
+<%@ var body: String %>
+<%@ var title: String = "Apache Karaf ${karaf.version}" %>
+<% escapeMarkup = false %>
+<!DOCTYPE html>
+<html>
+<head>
+  <style type="text/css">
+/*
+
+Copyright (c) 2005 Hakon Wium Lie and Bert Bos
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+html {
+  margin: 0; padding: 0;
+  font: 10pt/1.26 "Gill Sans", sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  font-family: "Gill Sans", sans-serif;
+  margin: 2em 0 0.5em 0;
+  page-break-after: avoid;
+}
+
+h1 {
+  font-size: 2.0em;
+  font-weight: 900;
+
+  margin: 0;
+  margin-left:-2cm;
+  margin-top:-1cm;
+  margin-bottom:1.5cm;
+  top: 0cm;
+  left: 0cm;
+  padding: 2cm;
+  padding-top: 0cm;
+  padding-bottom: 1cm;
+  background: #888;
+  border-bottom-right-radius: 2cm;
+  page-break-before: always;
+  page-break-inside: avoid;
+}
+
+@media screen, handheld {
+h1 {
+  margin-top:1cm;
+  background-image: url("chapter-rounded-bottom.png");
+  background-repeat: no-repeat;
+  background-position: bottom right;
+}
+div.page-reset > h1 {
+  margin-top:0cm;
+}
+}
+
+
+h2 {
+  font-size: 1.2em;
+  text-transform: uppercase;
+  font-weight: bold;
+}
+
+h3 {
+  font-size: 1em;
+  font-weight: bold;
+}
+
+q::before {
+  content: "\201C";
+}
+
+q::after {
+  content: "\201D";
+}
+
+p { margin: 0 }
+p + p { text-indent: 1.3em ; margin-top: 0.2em; }
+p.sidenote + p, p.caption, p.art { text-indent: 0 }
+
+p.author {
+  margin-top: 2em;
+  text-indent: 0;
+  text-align: right;
+}
+
+a { text-decoration: none; color: black }
+
+/* cross-references */
+
+a.pageref::after { content: " on page " target-counter(attr(href), page); }
+a.chapref::before { content: " Chapter " target-counter(attr(href), chapter) ", "; }
+a.figref { content: " Figure " target-counter(attr(href), figure); }
+a.tableref { content: " Table " target-counter(attr(href), figure); }
+a.listingref { content: " Listing " target-counter(attr(href), listing); }
+
+/* sidenotes */
+
+.sidenote {
+  float: left;
+  clear: left;
+  margin: 0 0 1em -41%;
+  width: 37%;
+  font-size: 0.9em;
+  font-style: normal;
+  text-indent: 0;
+  text-align: right;
+  page-break-inside: avoid;
+}
+
+/* sidebars */
+
+div.sidebar {
+  float: top-next;
+  margin: 1.2em 0 1.2em 0;
+  border: thin solid;
+  background: #CCC;
+  padding: 0.5em 1em;
+  page-break-inside: avoid;
+  column-count: 2;
+  column-gap: 1.5em;
+}
+
+div.sidebar h2 {
+  margin-top: 0;
+}
+
+/* frontpage */
+
+.title p{
+	font-size:22pt;
+  	font-family: "Gill Sans", sans-serif;
+  	text-align: center;
+}
+
+.copyright-section {
+	text-align: center;
+	font-size: 9pt;
+	page-break-after: always;
+	margin-top: 50pt;
+	margin-bottom: 20pt;
+}
+
+.toc-title {
+	font-size:18pt;
+  	font-family: "Gill Sans", sans-serif;
+  	text-align: left;
+  	margin-left:20pt;
+  	margin-bottom: 40pt;
+
+}
+
+/* figures, tables, and listings */
+
+div.confluenceTableSmall th.confluenceTh {
+  font-size: 11px;
+}
+
+div.confluenceTableSmall td.confluenceTd {
+  font-size: 7px;
+}
+
+div.figure {
+  margin: 1em 0;
+  counter-increment: figure;
+}
+
+div.figure .caption, div.table .caption {
+  font-size: 0.9em;
+  font-style: italic;
+}
+
+div.figure .caption::before {
+  content: "Figure " counter(figure) ". ";
+  font-weight: bold;
+  font-style: normal;
+}
+
+div.table .caption::before {
+  content: "Table " counter(table) ". ";
+  font-weight: bold;
+  font-style: normal;
+}
+
+div.table {
+  margin: 1em 0;
+  counter-increment: table;
+}
+
+div.table th {
+  text-align: left;
+}
+
+table th, table td {
+  text-align: left;
+  padding-right: 1em;
+  page-break-inside: avoid;
+}
+
+table th {
+  border-top: thin solid;
+  border-bottom: thin solid;
+  padding-top: 0.2em;
+  padding-bottom: 0.2em;
+}
+table td {
+  border-top: none;
+  border-bottom: thin dotted;
+  padding-top: 0.2em;
+  padding-bottom: 0.2em;
+}
+
+div.Scrollbar {
+	display: none;
+}
+
+
+/* Weird div.codeHeader a b::before would be a better selection
+   but prince does not properly match it.. Firefox does. */
+div.codeHeader::before {
+  content: "Listing " counter(listing) ". ";
+  font-weight: bold;
+  font-style: normal;
+}
+div.codeHeader a b {
+  font-style: italic;
+  font-weight: normal;
+}
+div.codeHeader {
+  font-size: 0.9em;
+  counter-increment: listing;
+}
+div.code {
+	border: 1px dashed #c0c0c0;
+    font-size: 12px;
+	font-family: Courier;
+    margin: 5px;
+	line-height: 13px;
+	padding: 3px;
+	background-color: #f8f8f8;
+
+}
+
+
+@page {
+  margin: 2cm;
+  size: 7in 9.25in;
+
+  @footnotes {
+    border-top: thin solid black;
+    padding-top: 0.3em;
+    margin-top: 0.6em;
+  }
+}
+
+
+/* define default page and names pages: cover, blank, frontmatter */
+div.page-reset {
+    counter-reset: page 1;
+}
+
+@page :left {
+  @top-left-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: left;
+    margin-left: 1cm;
+    visibility: hidden;
+  }
+  @top-left {
+    font-weight: 900;
+    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first);
+    visibility: hidden;
+  }
+  @bottom-left-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: left;
+    margin-left: 1cm;
+  }
+  @bottom-left {
+    font-weight: 900;
+    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first);
+  }
+}
+
+@page :right {
+  @top-right-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: left;
+    margin-left: 1cm;
+    visibility: hidden;
+  }
+  @top-right {
+    font-weight: 900;
+    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first)
+    visibility: hidden;
+  }
+  @bottom-right-corner {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    content: counter(page);
+    text-align: right;
+    margin-right: 1cm;
+  }
+  @bottom-right {
+    font-weight: 900; font: 9pt "Gill Sans", serif;
+    white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+    content: string(header, first)
+  }
+}
+
+/*
+  In theory we should be able to use the :first selector so taht
+  we can put the page numbering on the bottom of the first page of the chapter
+  but have the rest of the pages number at the top.  But this does not seem
+  to work.  See http://www.princexml.com/doc/6.0/page-selectors/
+
+  So for now just always number at the bottom :(
+*/
+/*
+div.chapter { page: bottom-number; }
+@page bottom-number :first {
+  @top-left {
+    visibility: hidden;
+  }
+  @bottom-left {
+    visibility: visible;
+  }
+  @top-right {
+    visibility: hidden;
+  }
+  @bottom-right {
+    visibility: visible;
+  }
+}
+*/
+
+@page cover { margin: 0; }
+
+@page frontmatter :left {
+  @bottom-left-corner {
+    content: counter(page, lower-roman);
+  }
+  @bottom-left-corner {
+    content: counter(page, lower-roman);
+  }
+}
+
+@page frontmatter :right {
+  @bottom-right-corner {
+    content: counter(page, lower-roman);
+  }
+  @bottom-right-corner {
+    content: counter(page, lower-roman);
+  }
+}
+
+@page blank :left {
+  @top-left { visibility: hidden; }
+  @bottom-left { visibility: hidden; }
+  @top-left-corner { visibility: hidden; }
+  @bottom-left-corner { visibility: hidden; }
+}
+
+@page blank :right {
+  @top-right { visibility: hidden; }
+  @bottom-right { visibility: hidden; }
+  @top-right-corner { visibility: hidden; }
+  @bottom-right-corner { visibility: hidden; }
+}
+
+/* footnotes */
+.footnote {
+  display: none;                   /* default rule */
+
+  display: prince-footnote;        /* prince-specific rules */
+  position: footnote;
+  footnote-style-position: inside;
+
+  counter-increment: footnote;
+  margin-left: 1.4em;
+  font-size: 90%;
+  line-height: 1.4;
+}
+
+.footnote::footnote-call {
+  vertical-align: super;
+  font-size: 80%;
+}
+
+.footnote::footnote-marker {
+  vertical-align: super;
+  color: green;
+  padding-right: 0.4em;
+}
+
+/* Confluence contents to hide */
+#labels-section {
+	display: none;
+}
+#comments-section {
+	display: none;
+}
+#footer {
+	display: none;
+}
+.hidden {
+	display: none;
+}
+
+/*
+   A book consists of different types of sections. We propose to use
+   DIV elements with these class names:
+
+    frontcover
+    halftitlepage: contains the title of the book
+    titlepage: contains the title of the book, name of author(s) and publisher
+    imprint: left page with copyright, publisher, library printing information
+    dedication: right page with short dedication
+    foreword: written by someone other than the author(s)
+    toc: table of contents
+    preface: preface, including acknowledgements
+    chapter: each chapter is given its own DIV element
+    references: contains list of references
+    appendix: each appendix is given its own
+    bibliography
+    glossary
+    index
+    colophon: describes how the book was produced
+    backcover
+
+   A book will use several of the types listed above, but few books
+   will use all of them.
+*/
+
+/* which section uses which named page */
+
+div.halftitlepage, div.titlepage, div.imprint, div.dedication { page: blank }
+div.foreword, div.toc, div.preface { page: frontmatter }
+
+
+/* page breaks */
+div.frontcover, div.halftitlepage, div.titlepage { page-break-before: right }
+div.imprint { page-break-before: always; }
+div.chapter { page-break-before: always; }
+div.dedication, div.foreword, div.toc, div.preface, div.reference,
+div.appendix, div.bibliography, div.glossary, div.index, div.colophon {
+  page-break-before: always
+}
+div.backcover { page-break-before: left }
+
+/* titlepage, halftitlepage */
+
+div.titlepage h1, div.halftitlepage h1 { margin-bottom: 2em; }
+div.titlepage h2, div.halftitlepage h2 { font-size: 1.2em; margin-bottom: 3em; }
+div.titlepage h3, div.halftitlepage h3 { font-size: 1em; margin-bottom: 3em; }
+div.titlepage p, div.halftitlepage p {
+  font-size: 1.4em;
+  font-weight: bold;
+  margin: 0; padding: 0;
+}
+
+
+/* TOC */
+
+ul.toc, ul.toc ul {
+  list-style-type: none;
+  margin: 0; padding: 0;
+  margin-left: 3cm;
+}
+ul.toc ul {
+  margin-left: 1em;
+  font-weight: normal;
+}
+ul.toc > li {
+  font-weight: bold;
+  margin-bottom: 0.5em;
+}
+ul.toc a::after {
+  content: leader('.') target-counter(attr(href), page);
+  font-style: normal;
+}
+ul.toc > li.frontmatter a::after {
+  content: leader('.') target-counter(attr(href), page, lower-roman);
+  font-style: normal;
+}
+ul.toc > li.endmatter a::after {
+  content: leader('.') target-counter(attr(href), page);
+  font-style: normal;
+}
+ul.toc > li.chapter::before {
+  content: "Chapter " counter(toc-chapter, decimal);
+  display: block;
+  margin: 1em 0 0.1em -2.5cm;
+  font-weight: normal;
+  counter-increment: toc-chapter;
+  page-break-after: avoid;
+}
+
+/* chapter numbers */
+
+div.chapter { counter-increment: chapter; }
+div.chapter h1::before {
+  text-transform: uppercase;
+  letter-spacing: 0.15em;
+  content: "Chapter  " counter(chapter) " \A\B0 \B0 \B0 \B0\A";
+  white-space: pre;
+  font-size: 50%;
+}
+
+div.frontcover h1::before, div.titlepage h1::before, div.halftitlepage h1::before {
+  content: normal; /* that is, none */
+}
+
+h1 { string-set: header content();}
+div.chapter h1 { string-set: header "Chapter " counter(chapter) " - " content(); }
+
+/* index */
+
+ul.index {
+  list-style-type: none;
+  margin: 0; padding: 0;
+  column-count: 2;
+  column-gap: 1em;
+}
+
+ul.index a::after { content: ", " target-counter(attr(href), page); }
+
+
+span.element, span.attribute {
+  text-transform: uppercase;
+  font-weight: bold;
+  font-size: 80%;
+}
+span.property { font-weight: bold }
+code, span.css, span.value, span.declaration {
+  font: 90% "Lucida Console", "Lucida Sans Typewriter", monospace;
+}
+
+
+@media screen, handheld {
+  html {font: 14px "Gill Sans", sans-serif; }
+  h1 { margin-bottom: 0.5em }
+  div.frontcover, div.halftitlepage, div.titlepage, div.imprint,
+  div.dedication, div.foreword, div.toc, div.index { display: none }
+  body {
+      margin: 0cm;
+      margin-left: 2cm;
+      margin-right: 2cm;
+  }
+}
+
+/*
+ * Enhancements to the take advantage of some of the style markup that
+ * Confluence generates
+ */
+a sup img { visibility: hidden; position: absolute;}
+
+img {
+  prince-image-resolution:150dpi;
+}
+
+table {
+  font: "Lucida Console", "Lucida Sans Typewriter", monospace;
+}
+
+table td {
+  font-size: 10pt;
+}
+
+pre {
+   white-space: pre-wrap;
+}
+
+.codeContent {
+  font-size: 80%;
+}
+.code {
+}
+.code-keyword {
+  color: #000091;
+  background-color: inherit;
+}
+
+.code-object {
+  color: #910091;
+  background-color: inherit;
+}
+
+.code-quote {
+  color: #009100;
+  background-color: inherit;
+}
+
+.code-comment {
+  color: #808080;
+  background-color: inherit;
+}
+
+
+.code-xml .code-keyword {
+  color: inherit;
+  font-weight: bold;
+}
+
+.code-tag {
+  color: #000091;
+  background-color: inherit;
+}
+
+.noteMacro { border-color: #F0C000; background-color: #FFFFCE;}
+.warningMacro { border-color: #CC0000; background-color: #FFCCCC }
+.infoMacro { border-color: #3c78b5; background-color: #D8E4F1; }
+.tipMacro { border-color: #090; background-color: #dfd;}
+.noteMacro, .warningMacro, .infoMacro, .tipMacro, .informationMacroPadding {
+  border: thin solid;
+  float: top-next;
+  margin: 1em 0 1.2em 0;
+  padding: 0.5em;
+  column-count: 2;
+  column-gap: 1.5em;
+  width: 100%;
+}
+table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
+    border: none;
+}
+table.infoMacro p, table.warningMacro p, table.tipMacro p, table.noteMacro p, table.sectionMacro p {
+    font-size:x-small;
+    margin-top: 1em;
+}
+  </style>
+  <style type="text/css">
+.syntax .hll { background-color: #ffffcc }
+.syntax  { background: #f0f0f0; }
+.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
+.syntax .err { border: 1px solid #FF0000 } /* Error */
+.syntax .k { color: #007020; font-weight: bold } /* Keyword */
+.syntax .o { color: #666666 } /* Operator */
+.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.syntax .cp { color: #007020 } /* Comment.Preproc */
+.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.syntax .gd { color: #A00000 } /* Generic.Deleted */
+.syntax .ge { font-style: italic } /* Generic.Emph */
+.syntax .gr { color: #FF0000 } /* Generic.Error */
+.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.syntax .gi { color: #00A000 } /* Generic.Inserted */
+.syntax .go { color: #808080 } /* Generic.Output */
+.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.syntax .gs { font-weight: bold } /* Generic.Strong */
+.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.syntax .gt { color: #0040D0 } /* Generic.Traceback */
+.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.syntax .kp { color: #007020 } /* Keyword.Pseudo */
+.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.syntax .kt { color: #902000 } /* Keyword.Type */
+.syntax .m { color: #40a070 } /* Literal.Number */
+.syntax .s { color: #4070a0 } /* Literal.String */
+.syntax .na { color: #4070a0 } /* Name.Attribute */
+.syntax .nb { color: #007020 } /* Name.Builtin */
+.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.syntax .no { color: #60add5 } /* Name.Constant */
+.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.syntax .ne { color: #007020 } /* Name.Exception */
+.syntax .nf { color: #06287e } /* Name.Function */
+.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
+.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.syntax .nv { color: #bb60d5 } /* Name.Variable */
+.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.syntax .w { color: #bbbbbb } /* Text.Whitespace */
+.syntax .mf { color: #40a070 } /* Literal.Number.Float */
+.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
+.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
+.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
+.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
+.syntax .sc { color: #4070a0 } /* Literal.String.Char */
+.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
+.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.syntax .sx { color: #c65d09 } /* Literal.String.Other */
+.syntax .sr { color: #235388 } /* Literal.String.Regex */
+.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
+.syntax .ss { color: #517918 } /* Literal.String.Symbol */
+.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
+.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
+.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
+
+
+/* don't highlight errors */
+.syntax .err {
+  border: none;
+}
+
+.syntax {
+  font-size: .9em;
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  background-color: #F8F8FF;
+
+  overflow:auto;
+  -moz-background-clip:border;
+  -moz-background-inline-policy:continuous;
+  -moz-background-origin:padding;
+  margin: 1em 0 1em 0;
+  border:1px solid #DDDDDD;
+
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
+  border-style: solid;  border-width: 1px; border-color: #dedede !important;
+  padding: 1em;
+}
+.syntax .linenodiv  {
+  background-color:#ECECEC;
+  border-right:1px solid #DDDDDD;
+  color:#AAAAAA;
+  padding: .5em;
+  text-align:right;
+}
+.syntax .highlight  {
+}
+.syntax pre {
+  margin:0;
+}
+
+pre.syntax {
+  padding: .5em;
+  background-color: #F8F8FF; overflow:auto;
+}
+
+.syntax code {
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  font-size: 10pt;
+}
+
+div.compare { width: 700px; }
+div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
+div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
+div.compare div h3 {
+  margin-left: 15px;
+  padding: 5px 15px;
+  display: inline;
+  font-size: .8em;
+  color: #666;
+
+  border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
+  border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
+  border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px;  -moz-border-radius-topleft: 8px;
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
+}
+div.compare div div {
+  margin: 5px 0px 0px 0px;
+}
+.clear {
+  clear:both;
+}
+.wide div.compare div.compare-left { float:none; width:700px; }
+.wide div.compare div.compare-right { float:none; width:700px; }
+
+  </style>
+
+  <title>${title}</title>
+</head>
+<body>
+  <div id="titlepage">
+    <div id="title">Apache ServiceMix</div>
+    <div id="subtitle">Version ${servicemix-version}</div>
+  </div>
+  <div id="main">
+    <%= body %>
+  </div>
+</body>
+</html>
diff --git a/manual/src/main/webapp/WEB-INF/web.xml b/manual/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9b44f34
--- /dev/null
+++ b/manual/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (C) 2009-2010 the original author or authors.
+    See the notice.md file distributed with this work for additional
+    information regarding copyright ownership.
+
+    Licensed 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.
+
+-->
+
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	version="2.5">
+
+  <display-name>Apache ServiceMix Documentation</display-name>
+
+  <description>
+    Apache ServiceMix Documentation
+  </description>
+
+  <filter>
+    <filter-name>TemplateEngineFilter</filter-name>
+    <filter-class>org.fusesource.scalate.servlet.TemplateEngineFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>TemplateEngineFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <welcome-file-list>
+    <welcome-file>index.conf</welcome-file>
+  </welcome-file-list>
+
+  <error-page>
+    <error-code>500</error-code>
+    <location>/WEB-INF/scalate/errors/500.scaml</location>
+  </error-page>
+</web-app>
diff --git a/manual/src/main/webapp/_banner.ssp b/manual/src/main/webapp/_banner.ssp
new file mode 100644
index 0000000..899fa60
--- /dev/null
+++ b/manual/src/main/webapp/_banner.ssp
@@ -0,0 +1,15 @@
+      <table border="0" cellpadding="0" cellspacing="0" width="100%">
+        <tr>
+          <td align="left" class="topbardiv" nowrap="">
+<a href="http://servicemix.apache.org/" title="An Open Source ESB and Integration Plaftorm powered by OSGi">
+            <img border="0" src="${uri("/images/smx-logo.png")}" width="400px"></img>
+            <span style="position: relative; top: -24px; font-family: Comic Sans MS; font-size: 64px; color: white;"></span>
+</a>
+          </td>
+          <td align="right" nowrap="">
+<a href="http://www.apache.org/" title="The Apache Sofware Foundation">
+            <img border="0" src="${uri("/images/asf-logo.png")}">
+</a>
+          </td>
+        </tr>
+      </table>
diff --git a/manual/src/main/webapp/_navigation.conf b/manual/src/main/webapp/_navigation.conf
new file mode 100644
index 0000000..ddb1684
--- /dev/null
+++ b/manual/src/main/webapp/_navigation.conf
@@ -0,0 +1,2 @@
+h3. [Home|/index]
+
diff --git a/manual/src/main/webapp/_quicklinks.ssp b/manual/src/main/webapp/_quicklinks.ssp
new file mode 100644
index 0000000..334d683
--- /dev/null
+++ b/manual/src/main/webapp/_quicklinks.ssp
@@ -0,0 +1,8 @@
+<p>
+<a href="${uri("/index.html")}" title="Home">Home</a>
+&#124;
+<a href="${uri("/index.html")}" title="Home">Home</a>
+&#124;
+<a href="${uri("/index.html")}" title="Home">Home</a>
+</p>
+
diff --git a/manual/src/main/webapp/css/pygmentize.css b/manual/src/main/webapp/css/pygmentize.css
new file mode 100644
index 0000000..80efdcd
--- /dev/null
+++ b/manual/src/main/webapp/css/pygmentize.css
@@ -0,0 +1,134 @@
+.syntax .hll { background-color: #ffffcc }
+.syntax  { background: #f0f0f0; }
+.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
+.syntax .err { border: 1px solid #FF0000 } /* Error */
+.syntax .k { color: #007020; font-weight: bold } /* Keyword */
+.syntax .o { color: #666666 } /* Operator */
+.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.syntax .cp { color: #007020 } /* Comment.Preproc */
+.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.syntax .gd { color: #A00000 } /* Generic.Deleted */
+.syntax .ge { font-style: italic } /* Generic.Emph */
+.syntax .gr { color: #FF0000 } /* Generic.Error */
+.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.syntax .gi { color: #00A000 } /* Generic.Inserted */
+.syntax .go { color: #808080 } /* Generic.Output */
+.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.syntax .gs { font-weight: bold } /* Generic.Strong */
+.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.syntax .gt { color: #0040D0 } /* Generic.Traceback */
+.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.syntax .kp { color: #007020 } /* Keyword.Pseudo */
+.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.syntax .kt { color: #902000 } /* Keyword.Type */
+.syntax .m { color: #40a070 } /* Literal.Number */
+.syntax .s { color: #4070a0 } /* Literal.String */
+.syntax .na { color: #4070a0 } /* Name.Attribute */
+.syntax .nb { color: #007020 } /* Name.Builtin */
+.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.syntax .no { color: #60add5 } /* Name.Constant */
+.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.syntax .ne { color: #007020 } /* Name.Exception */
+.syntax .nf { color: #06287e } /* Name.Function */
+.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
+.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.syntax .nv { color: #bb60d5 } /* Name.Variable */
+.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.syntax .w { color: #bbbbbb } /* Text.Whitespace */
+.syntax .mf { color: #40a070 } /* Literal.Number.Float */
+.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
+.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
+.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
+.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
+.syntax .sc { color: #4070a0 } /* Literal.String.Char */
+.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
+.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.syntax .sx { color: #c65d09 } /* Literal.String.Other */
+.syntax .sr { color: #235388 } /* Literal.String.Regex */
+.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
+.syntax .ss { color: #517918 } /* Literal.String.Symbol */
+.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
+.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
+.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
+
+
+/* don't highlight errors */
+.syntax .err {
+  border: none;
+}
+
+.syntax {
+  font-size: .9em;
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  background-color: #F8F8FF; 
+  
+  overflow:auto;
+  -moz-background-clip:border;
+  -moz-background-inline-policy:continuous;
+  -moz-background-origin:padding;
+  margin: 1em 0 1em 0;
+  border:1px solid #DDDDDD;
+  
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;  
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
+  border-style: solid;  border-width: 1px; border-color: #dedede !important; 
+  padding: 1em;
+}
+.syntax .linenodiv  {
+  background-color:#ECECEC;
+  border-right:1px solid #DDDDDD;
+  color:#AAAAAA;
+  padding: .5em;
+  text-align:right;
+}
+.syntax .highlight  {
+}
+.syntax pre {
+  margin:0;
+}
+
+pre.syntax {
+  padding: .5em;
+  background-color: #F8F8FF; overflow:auto;
+}
+
+.syntax code {
+  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
+  font-size: 10pt;
+}
+
+div.compare { width: 700px; }
+div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
+div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
+div.compare div h3 {
+  margin-left: 15px;
+  padding: 5px 15px;
+  display: inline;
+  font-size: .8em;
+  color: #666;
+
+  border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
+  border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
+  border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
+  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px;  -moz-border-radius-topleft: 8px;
+  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px; 
+}
+div.compare div div {
+  margin: 5px 0px 0px 0px;
+}
+.clear {
+  clear:both;
+}
+.wide div.compare div.compare-left { float:none; width:700px; }
+.wide div.compare div.compare-right { float:none; width:700px; }
+
diff --git a/manual/src/main/webapp/css/scalate/console.css b/manual/src/main/webapp/css/scalate/console.css
new file mode 100644
index 0000000..4b2dfe7
--- /dev/null
+++ b/manual/src/main/webapp/css/scalate/console.css
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2009-2010 the original author or authors.
+ * See the notice.md file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * Licensed 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.
+ */
+
+#scalate-console {
+  position:fixed;
+  top:40px;
+  right:10px;
+  background: #FDFCAD;
+  padding:10px;
+  border: 1px solid #BDBD81;
+  font-family:Arial,Verdana,Helvetica,sans-serif;
+  font-size: 80%;
+  max-width: 400px;
+}
+
+#scalate-console .archetypes ul, #scalate-console .templates ul, #scalate-console .resources ul, #scalate-console .layouts ul   {
+  padding-left:20px;
+  overflow: auto;
+}
+
+#scalate-console .toggle {
+  text-align: right;
+}
+
+#scalate-console .toggle img {
+  vertical-align: middle;
+}
+
+#scalate-console div.attributes {
+  margin: 10px;
+  overflow: auto;
+  background: white;
+}
+
+#scalate-console div.attributes table th {
+  text-align: left;
+  color: #993333;
+}
+#scalate-console div.attributes table td {
+  padding:2px;
+  border-top: 1px solid #BDBD81;
+}
+
+#scalate-console div.body {
+  margin: 10px;
+  overflow: auto;
+  max-height: 300px;
+  background: white;
+}
+
+#scalate-console div.systemProperties {
+  margin: 10px;
+  overflow: auto;
+  max-height: 300px;
+  background: white;
+}
diff --git a/manual/src/main/webapp/css/style.css b/manual/src/main/webapp/css/style.css
new file mode 100644
index 0000000..496901e
--- /dev/null
+++ b/manual/src/main/webapp/css/style.css
@@ -0,0 +1,1588 @@
+/**
+ * Copyright (C) 2009-2010 the original author or authors.
+ * See the notice.md file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * Licensed 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 {
+  margin: 0;
+  padding: 0;
+}
+
+#cell-0-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-0-1 { height: 1em; width: 85%; }
+#cell-0-2 { background: transparent url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+#cell-1-0 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-1-1 { background: transparent url( '../images/bg02-blue-left.png' ) no-repeat right top; width:13px; }
+#cell-1-2 { background: transparent url( '../images/bg.png' ) repeat-x top; width:85%; }
+#banner { height: 80px; }
+#cell-1-3 { background: transparent url( '../images/bg02-blue-right.png' ) no-repeat left top; width:13px; }
+#cell-1-4 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-2-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-2-1 { height: 1em; width: 85%; }
+#cell-2-2 { background: white url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+#cell-3-0 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-3-1 { background: transparent url( '../images/bg02-blue-left.png' ) no-repeat right top; width:13px; }
+#cell-3-2 { background: transparent url( '../images/bg.png' ) repeat-x top; width:85%; }
+#cell-3-3 { background: transparent url( '../images/bg02-blue-right.png' ) no-repeat left top; width:13px; }
+#cell-3-4 { background: transparent url( '../images/bg.png' ) repeat-x top; }
+#cell-4-0 { background: white url( '../images/bg02-white-left-nogr.png' ) repeat-y right top; }
+#cell-4-1 { height: 1em; width: 85%; }
+#cell-4-2 { background: transparent url( '../images/bg02-white-right-nogr.png' ) repeat-y left top; }
+
+#banner {
+  margin: 0px 20px;
+  padding: 0px 50px 0px 50px;
+  font-size: 200%;
+  text-align: center;
+  background: transparent;
+}
+#top-menu {
+  margin: 0px 25px;
+  padding: 2px;
+  line-height: 100%;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;
+  font-size: 11px;
+  color: white;
+  line-height: 13px;
+  overflow: none;
+}
+#top-menu a:link, #top-menu a:visited {
+  color: #ffffff;
+  text-decoration: none;
+}
+#top-menu a:active, #top-menu a:hover {
+  color: #5b8fbe;
+  text-decoration: underline;
+}
+#top-menu sup img {
+  height: 0px;
+  width: 0px;
+}
+
+#footer {
+  padding: 0px 50px 0px 50px;
+  min-height: 0em;
+  text-align: center;
+  color: white;
+  font-size: 65%;
+  font-family: Verdana, arial, sans-serif;
+}
+#site-footer {
+  margin: 5px;
+}
+#footer a:link, #footer a:visited {
+  color: white;
+  text-decoration: none;
+}
+#footer a:hover {
+  color: white;
+  text-decoration: underline;
+}
+
+#wrapper-menu-page-right {
+  background: transparent url( '../images/left-box-right.png' ) repeat-y right;
+}
+
+#wrapper-menu-page-bottom {
+  background: transparent url( '../images/left-box-bottom.png' ) no-repeat right bottom;
+}
+
+#wrapper-menu-page-top {
+  background: transparent url( '../images/left-box-top.png' ) no-repeat right top;
+}
+
+#menu-page {
+  width: 200px;
+  color: #5b8fbe;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;
+  margin: 0px;
+  padding: 17px 11px 17px 0px;
+  text-align: left;
+  margin-left: 0px;
+  line-height: 1em;
+}
+
+#menu-page ul {
+  margin: 0;
+  padding: 0;
+  padding-left: 35px;
+  font-size: 75%;
+}
+
+#menu-page h3 {
+  font-size: 75%;
+  text-transform: uppercase;
+  margin: 1em 0 0.3em 0;
+  color: #5b8fbe;
+  font-weight: normal;
+  letter-spacing: 0.15em;
+  background: url('../images/big-bullet.png') no-repeat 0pt;
+  background-position:left center;
+  margin-left:15px;
+  padding-left: 20px;
+  font-family: Verdana, arial, sans-serif;
+  font-weight: bold;
+}
+
+#menu-page a:link, #menu-page a:visited {
+  color: black;
+}
+
+#menu-page a:hover {
+  color: #5b8fbe;
+}
+
+#content {
+  padding: 20px 0px 0px 0px;
+  display: block;
+  text-align: left;
+  height: 100%;
+  width: 100%;
+  color: black;
+}
+
+h2 {
+  font-size: 110%;
+}
+
+h3 {
+  font-size: 100%;
+}
+
+a:link, a:visited {
+  color: #5b8fbe;
+  text-decoration: none;
+}
+
+a:hover {
+  color: #666;
+  text-decoration: none;
+}
+
+
+table.align {
+  padding: 0px;
+  border: none;
+}
+
+td.align {
+  padding: 0px;
+  border: none;
+}
+
+/*********************************************************************
+ CSS Elements that are part of the confluence rendered xhtml
+ *********************************************************************/
+.wiki-content {
+	font-family: Verdana, arial, sans-serif;
+	font-size: 11px;
+	line-height: 16px;
+	color: #000000;
+	font-weight: normal;
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+/*
+** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
+** use an id=PageContent or class=wiki-content, so we must
+** set the body style to that used for PageContent, and p to that used for wiki-content.
+*/
+
+.monospaceInput {
+    font:12px monospace
+}
+
+.wiki-content p, .commentblock p {
+    margin: 16px 0px 16px 0px;
+    padding: 0px;
+}
+
+.wiki-content-preview {
+    padding: 5px;
+    border-left: 1px solid #3c78b5;
+    border-right: 1px solid #3c78b5;
+}
+
+ul, ol {
+    margin-top: 2px;
+    margin-bottom: 2px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+}
+
+pre {
+    padding: 0px;
+    margin-top: 5px;
+    margin-left: 15px;
+    margin-bottom: 5px;
+    margin-right: 5px;
+    text-align: left;
+}
+
+.helpheading {
+    font-weight: bold;
+    background-color: #D0D9BD;
+        border-bottom: 1px solid #3c78b5;
+        padding: 4px 4px 4px 4px;
+        margin: 0px;
+        margin-top: 10px;
+}
+.helpcontent {
+        padding: 4px 4px 20px 4px;
+    background-color: #f5f7f1;
+}
+
+.code {
+ 	border: 1px dashed #3c78b5;
+    font-size: 11px;
+	font-family: Courier;
+    margin: 10px;
+	line-height: 13px;
+}
+
+.focusedComment {
+    background: #ffffce;
+}
+
+.commentBox, .focusedComment {
+    padding: 10px;
+    margin: 5px 0 5px 0;
+    border: 1px #bbb solid;
+}
+
+.codeHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #3c78b5;
+    padding: 3px;
+	text-align: center;
+}
+
+.codeContent {
+    text-align: left;
+    background-color: #f0f0f0;
+    padding: 3px;
+}
+
+.preformatted {
+ 	border: 1px dashed #3c78b5;
+    font-size: 11px;
+	font-family: Courier;
+    margin: 10px;
+	line-height: 13px;
+}
+
+.preformattedHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #3c78b5;
+    padding: 3px;
+	text-align: center;
+}
+
+.preformattedContent {
+    background-color: #f0f0f0;
+    padding: 3px;
+}
+
+.panel {
+ 	border: 1px dashed #3c78b5;
+    margin: 10px;
+    margin-top: 0px;
+}
+
+.panelHeader {
+    background-color: #f0f0f0;
+ 	border-bottom: 1px dashed #3c78b5;
+    padding: 3px;
+	text-align: center;
+}
+
+.panelContent {
+    background-color: #f0f0f0;
+    padding: 5px;
+}
+
+.anonymousAlert {
+    background-color: #f0f0f0;
+ 	border: 1px dashed red;
+    font-size: 11px;
+    padding: 10px 5px 10px 5px;
+    margin: 4px;
+	line-height: 13px;
+}
+
+.lockAlert {
+    background-color: #f0f0f0;
+    width: 50%;
+ 	border: 1px dashed red;
+    font-size: 11px;
+    padding: 10px 5px 10px 5px;
+    margin: 4px;
+	line-height: 13px;
+}
+
+
+.code-keyword {
+  color: #000091;
+  background-color: inherit;
+}
+
+.code-object {
+  color: #910091;
+  background-color: inherit;
+}
+
+.code-quote {
+  color: #009100;
+  background-color: inherit;
+}
+
+.code-comment {
+  color: #808080;
+  background-color: inherit;
+}
+
+
+.code-xml .code-keyword {
+  color: inherit;
+  font-weight: bold;
+}
+
+.code-tag {
+  color: #000091;
+  background-color: inherit;
+}
+
+.breadcrumbs {
+    background-color: #f0f0f0;
+ 	border-color: #3c78b5;
+	border-width: 1px 0px 1px 0px;
+	border-style: solid;
+    font-size: 11px;
+    padding: 3px 0px 3px 0px;
+}
+
+.navmenu {
+    border: 1px solid #ccc;
+}
+
+.menuheading {
+    font-weight: bold;
+    background-color: #f0f0f0;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 4px 4px 2px 4px;
+}
+
+.menuitems {
+	padding: 4px 4px 20px 4px;
+}
+
+.rightpanel {
+    border-left: 1px solid #ccc;
+    border-bottom: 1px solid #ccc;
+}
+
+#helpheading {
+    text-align: left;
+    font-weight: bold;
+    background-color: #D0D9BD;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 4px 4px 4px 4px;
+	margin: 0px;
+}
+#helpcontent {
+	padding: 4px 4px 4px 4px;
+    background-color: #f5f7f1;
+}
+.helptab-unselected {
+    font-weight: bold;
+	padding: 5px;
+    background-color: #f5f7f1;
+}
+.helptab-selected {
+    font-weight: bold;
+    background-color: #D0D9BD;
+	padding: 5px;
+}
+.helptabs {
+    margin: 0px;
+    background-color: #f5f7f1;
+	padding: 5px;
+}
+.infopanel-heading {
+    font-weight: bold;
+	padding: 4px 0px 2px 0px;
+}
+
+.pagebody {
+}
+
+.pageheader {
+	padding: 5px 5px 5px 0px;
+ 	border-bottom: 1px solid #3c78b5;
+}
+
+.steptitle {
+	font-size: 18px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: #003366;
+	margin-bottom: 7px;
+}
+
+.substeptitle {
+    font-size: 12px;
+    font-weight: bold;
+    font-family: Arial, sans-serif;
+    color: #003366;
+    margin: 2px 4px 4px 4px;
+    padding: 2px 4px 1px 4px;
+}
+
+.stepdesc {
+    font-family: Verdana, arial, sans-serif;
+	font-size: 11px;
+	line-height: 16px;
+	font-weight: normal;
+    color: #666666;
+    margin-top: 7px;
+    margin-bottom: 7px;
+}
+
+.steplabel {
+    font-weight: bold;
+    margin-right: 4px;
+    color: black;
+    float: left;
+    width: 15%;
+    text-align: right;
+}
+
+.stepfield {
+    background: #f0f0f0;
+    padding: 5px;
+}
+
+.submitButtons{
+    margin-top:5px;
+    text-align:right;
+}
+
+.formtitle {
+	font-size: 12px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: #003366;
+}
+
+.sectionbottom {
+    border-bottom: 1px solid #3c78b5;
+}
+
+.topRow {
+    border-top: 2px solid #3c78b5;
+}
+
+.tabletitle {
+	font-size: 14px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+    padding: 3px 0px 2px 0px;
+    margin: 8px 4px 2px 0px;
+	color: #003366;
+	border-bottom: 2px solid #3c78b5;
+}
+.pagesubheading {
+    color: #666666;
+    font-size: 10px;
+    padding: 0px 0px 5px 0px;
+}
+
+HR {
+	color: 3c78b5;
+	height: 1;
+}
+
+A:link, A:visited, A:active, A:hover {
+  color: #5b8fbe;
+}
+
+A:hover {
+  text-decoration: underline;
+}
+
+h1 A:link, h1 A:visited, h1 A:active {
+	text-decoration: none;
+}
+
+h1 A:hover {
+    border-bottom: 1px dotted #003366;
+}
+
+.wiki-content > :first-child, .commentblock > :first-child {
+    margin-top: 3px;
+}
+
+.logocell {
+    padding: 10px;
+}
+
+input {
+	font-family: verdana, geneva, arial, sans-serif;
+	font-size: 11px;
+	color: #000000;
+}
+
+textarea, textarea.editor {
+	font-family: verdana, geneva, arial, sans-serif;
+	font-size: 11px;
+	color: #333333;
+}
+
+/* use logoSpaceLink instead.
+.spacenametitle {
+	font: 21px/31px Impact, Arial, Helvetica;
+    font-weight: 100;
+    color: #999999;
+	margin: 0px;
+}
+.spacenametitle img {
+  margin: 0 0 -4px 0;
+}
+.spacenametitle a {
+    text-decoration: none;
+    color: #999999;
+}
+.spacenametitle a:visited {
+    text-decoration: none;
+    color: #999999;
+}*/
+
+.spacenametitle-printable {
+	font: 20px/25px Impact, Arial, Helvetica;
+    font-weight: 100;
+    color: #999999;
+	margin: 0px;
+}
+.spacenametitle-printable a {
+    text-decoration: none;
+    color: #999999;
+}
+.spacenametitle-printable a:visited {
+    text-decoration: none;
+    color: #999999;
+}
+
+.blogDate {
+	font-weight: bold;
+	text-decoration: none;
+	color: black;
+}
+
+.blogSurtitle {
+    background: #f0f0f0;
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.blogHeading {
+    font-size: 20px;
+    line-height: normal;
+    font-weight: bold;
+    padding: 0px;
+    margin: 0px;
+}
+
+.blogHeading a {
+   text-decoration: none;
+   color: black;
+}
+
+.endsection {
+	align: right;
+	color: #666666;
+	margin-top: 10px;
+}
+.endsectionleftnav {
+	align: right;
+	color: #666666;
+	margin-top: 10px;
+}
+
+h1 {
+	font-size: 24px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	color: #003366;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 2px;
+	margin: 36px 0px 4px 0px;
+}
+
+h2 {
+	font-size: 18px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+ 	border-bottom: 1px solid #3c78b5;
+	padding: 2px;
+	margin: 27px 0px 4px 0px;
+}
+
+h3 {
+	font-size: 14px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 21px 0px 4px 0px;
+}
+
+h4 {
+	font-size: 12px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 18px 0px 4px 0px;
+}
+
+h4.search {
+	font-size: 12px;
+	line-height: normal;
+	font-weight: normal;
+	background-color: #f0f0f0;
+	padding: 4px;
+	margin: 18px 0px 4px 0px;
+}
+
+h5 {
+	font-size: 10px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 14px 0px 4px 0px;
+}
+
+h6 {
+	font-size: 8px;
+	line-height: normal;
+	font-weight: bold;
+	background-color: #f0f0f0;
+	padding: 2px;
+	margin: 14px 0px 4px 0px;
+}
+
+.smallfont {
+    font-size: 10px;
+}
+.descfont {
+    font-size: 10px;
+    color: #666666;
+}
+.smallerfont {
+    font-size: 9px;
+}
+.smalltext {
+    color: #666666;
+    font-size: 10px;
+}
+.smalltext a {
+    color: #666666;
+}
+.smalltext-blue {
+    color: #3c78b5;
+    font-size: 10px;
+}
+.surtitle {
+    margin-left: 1px;
+    margin-bottom: 5px;
+    font-size: 14px;
+    color: #666666;
+}
+
+/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
+.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
+.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
+.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
+.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
+.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
+.navItem a { color: #ffffff; text-decoration: none; }
+.navItem a:hover { color: #ffffff; text-decoration: none; }
+.navItem a:visited { color: #ffffff; text-decoration: none; }
+
+div.padded { padding: 4px; }
+div.thickPadded { padding: 10px; }
+h3.macrolibrariestitle {
+    margin: 0px 0px 0px 0px;
+}
+
+div.centered { text-align: center; margin: 10px; }
+div.centered table {margin: 0px auto; text-align: left; }
+
+.tableview table {
+    margin: 0;
+}
+
+.tableview th {
+    text-align: left;
+    color: #003366;
+    font-size: 12px;
+    padding: 5px 0px 0px 5px;
+    border-bottom: 2px solid #3c78b5;
+}
+.tableview td {
+    text-align: left;
+    border-color: #ccc;
+    border-width: 0px 0px 1px 0px;
+    border-style: solid;
+    margin: 0;
+    padding: 4px 10px 4px 5px;
+}
+
+.grid {
+    margin: 2px 0px 5px 0px;
+    border-collapse: collapse;
+}
+.grid th  {
+    border: 1px solid #ccc;
+    padding: 2px 4px 2px 4px;
+    background: #f0f0f0;
+    text-align: center;
+}
+.grid td  {
+    border: 1px solid #ccc;
+    padding: 3px 4px 3px 4px;
+}
+.gridHover {
+	background-color: #f9f9f9;
+}
+
+td.infocell {
+    background-color: #f0f0f0;
+}
+.label {
+	font-weight: bold;
+	color: #003366;
+}
+.error {
+	background-color: #fcc;
+}
+
+.errorBox {
+	background-color: #fcc;
+    border: 1px solid #c00;
+    padding: 5px;
+    margin: 5px;
+}
+
+.errorMessage {
+	color: #c00;
+}
+
+.success {
+	background-color: #dfd;
+}
+
+.successBox {
+	background-color: #dfd;
+    border: 1px solid #090;
+    padding: 5px;
+    margin-top:5px;
+    margin-bottom:5px;
+}
+
+blockquote {
+	padding-left: 10px;
+	padding-right: 10px;
+	margin-left: 5px;
+	margin-right: 0px;
+	border-left: 1px solid #3c78b5;
+}
+
+table.confluenceTable
+{
+    margin: 5px;
+    border-collapse: collapse;
+}
+
+/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
+table.confluenceTable td.confluenceTd
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+}
+
+/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
+table.confluenceTable th.confluenceTh
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+    background-color: #f0f0f0;
+    text-align: center;
+}
+
+td.confluenceTd
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+}
+
+th.confluenceTh
+{
+    border-width: 1px;
+    border-style: solid;
+    border-color: #ccc;
+    padding: 3px 4px 3px 4px;
+    background-color: #f0f0f0;
+    text-align: center;
+}
+
+DIV.small {
+	font-size: 9px;
+}
+
+H1.pagename {
+	margin-top: 0px;
+}
+
+IMG.inline  {}
+
+.loginform {
+    margin: 5px;
+    border: 1px solid #ccc;
+}
+
+/* The text how the "This is a preview" comment should be shown. */
+.previewnote { text-align: center;
+                font-size: 11px;
+                    color: red; }
+
+/* How the preview content should be shown */
+.previewcontent { background: #E0E0E0; }
+
+/* How the system messages should be shown (DisplayMessage.jsp) */
+.messagecontent { background: #E0E0E0; }
+
+/* How the "This page has been modified..." -comment should be shown. */
+.conflictnote { }
+
+.createlink {
+    color: maroon;
+}
+a.createlink {
+    color: maroon;
+}
+.templateparameter {
+    font-size: 9px;
+    color: darkblue;
+}
+
+.diffadded {
+    background: #ddffdd;
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid darkgreen;
+}
+.diffdeleted {
+    color: #999;
+    background: #ffdddd;
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid darkred;
+}
+.diffnochange {
+    padding: 1px 1px 1px 4px;
+	border-left: 4px solid lightgrey;
+}
+.differror {
+    background: brown;
+}
+.diff {
+    font-family: lucida console, courier new, fixed-width;
+	font-size: 12px;
+	line-height: 14px;
+}
+.diffaddedchars {
+    background-color:#99ff99;
+    font-weight:bolder;
+}
+.diffremovedchars {
+    background-color:#ff9999;
+    text-decoration: line-through;
+    font-weight:bolder;
+}
+
+.greybackground {
+    background: #f0f0f0
+}
+
+.greybox {
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.borderedGreyBox {
+    border: 1px solid #cccccc;
+    background-color: #f0f0f0;
+    padding: 10px;
+}
+
+.greyboxfilled {
+ 	border: 1px solid #ddd;
+	padding: 5px;
+	margin: 10px 1px 10px 1px;
+	background: #f0f0f0;
+}
+
+.navBackgroundBox {
+    padding: 5px 5px 5px 5px;
+    font-size: 22px;
+	font-weight: bold;
+	font-family: Arial, sans-serif;
+	color: white;
+    background: #3c78b5;
+    text-decoration: none;
+}
+
+.previewBoxTop {
+	background-color: #f0f0f0;
+    border-width: 1px 1px 0px 1px;
+    border-style: solid;
+    border-color: #3c78b5;
+    padding: 5px;
+    margin: 5px 0px 0px 0px;
+    text-align: center;
+}
+.previewContent {
+    background-color: #fff;
+ 	border-color: #3c78b5;
+	border-width: 0px 1px 0px 1px;
+	border-style: solid;
+	padding: 10px;
+	margin: 0px;
+}
+.previewBoxBottom {
+	background-color: #f0f0f0;
+    border-width: 0px 1px 1px 1px;
+    border-style: solid;
+    border-color: #3c78b5;
+    padding: 5px;
+    margin: 0px 0px 5px 0px;
+    text-align: center;
+}
+
+.functionbox {
+    background-color: #f0f0f0;
+ 	border: 1px solid #3c78b5;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.functionbox-greyborder {
+    background-color: #f0f0f0;
+ 	border: 1px solid #ddd;
+	padding: 3px;
+	margin: 1px 1px 10px 1px;
+}
+
+.search-highlight {
+    background-color: #ffffcc;
+}
+
+/* normal (white) background */
+.rowNormal {
+    background-color: #ffffff;
+ }
+
+/* alternate (pale yellow) background */
+.rowAlternate {
+    background-color: #f7f7f7;
+}
+
+/* used in the list attachments table */
+.rowAlternateNoBottomColor {
+    background-color: #f7f7f7;
+}
+
+.rowAlternateNoBottomNoColor {
+}
+
+.rowAlternateNoBottomColor td {
+    border-bottom: 0px;
+}
+
+.rowAlternateNoBottomNoColor td {
+    border-bottom: 0px;
+}
+
+/* row highlight (grey) background */
+.rowHighlight {
+    background-color: #f0f0f0;
+
+}
+
+TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
+
+TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
+TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }
+
+.toolbar  {
+    margin: 0px;
+    border-collapse: collapse;
+}
+
+.toolbar td  {
+    border: 1px solid #ccc;
+    padding: 2px 2px 2px 2px;
+    color: #ccc;
+}
+
+td.noformatting {
+    border-width: 0px;
+    border-style: none;
+    text-align: center;
+	padding: 0px;
+}
+
+.commentblock {
+    margin: 12px 0 12px 0;
+}
+
+/*
+ * Divs displaying the license information, if necessary.
+ */
+.license-eval, .license-none, .license-nonprofit {
+    border-top: 1px solid #bbbbbb;
+    text-align: center;
+    font-size: 10px;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+}
+
+.license-eval, .license-none {
+    background-color: #ffcccc;
+}
+
+.license-eval b, .license-none b {
+    color: #990000
+}
+
+.license-nonprofit {
+    background-color: #ffffff;
+}
+
+/*
+ * The shadow at the bottom of the page between the main content and the
+ * "powered by" section.
+ */
+.bottomshadow {
+    height: 12px;
+    background-image: url("$req.contextPath/images/border/border_bottom.gif");
+    background-repeat: repeat-x;
+}
+
+/*
+ * Styling of the operations box
+ */
+.navmenu .operations li, .navmenu .operations ul {
+    list-style: none;
+    margin-left: 0;
+    padding-left: 0;
+}
+
+.navmenu .operations ul {
+    margin-bottom: 9px;
+}
+
+.navmenu .label {
+    font-weight: inherit;
+}
+
+/*
+ * Styling of ops as a toolbar
+ */
+.toolbar div {
+    display: none;
+}
+
+.toolbar .label {
+    display: none;
+}
+
+.toolbar .operations {
+    display: block;
+}
+
+.toolbar .operations ul {
+    display: inline;
+    list-style: none;
+    margin-left: 10px;
+    padding-left: 0;
+}
+
+.toolbar .operations li {
+    list-style: none;
+    display: inline;
+}
+
+/* list page navigational tabs */
+#foldertab {
+padding: 3px 0px 3px 8px;
+margin-left: 0;
+border-bottom: 1px solid #3c78b5;
+font: bold 11px Verdana, sans-serif;
+}
+
+#foldertab li {
+list-style: none;
+margin: 0;
+display: inline;
+}
+
+#foldertab li a {
+padding: 3px 0.5em;
+margin-left: 3px;
+border: 1px solid #3c78b5;
+border-bottom: none;
+background: #3c78b5;
+text-decoration: none;
+}
+
+#foldertab li a:link { color: #ffffff; }
+#foldertab li a:visited { color: #ffffff; }
+
+#foldertab li a:hover {
+color: #ffffff;
+background: #003366;
+border-color: #003366;
+}
+
+#foldertab li a.current {
+background: white;
+border-bottom: 1px solid white;
+color: black;
+}
+
+#foldertab li a.current:link { color: black; }
+#foldertab li a.current:visited { color: black; }
+#foldertab li a.current:hover {
+background: white;
+border-bottom: 1px solid white;
+color: black;
+}
+
+/* alphabet list */
+ul#squaretab {
+margin-left: 0;
+padding-left: 0;
+white-space: nowrap;
+font: bold 8px Verdana, sans-serif;
+}
+
+#squaretab li {
+display: inline;
+list-style-type: none;
+}
+
+#squaretab a {
+padding: 2px 6px;
+border: 1px solid #3c78b5;
+}
+
+#squaretab a:link, #squaretab a:visited {
+color: #fff;
+background-color: #3c78b5;
+text-decoration: none;
+}
+
+#squaretab a:hover {
+color: #ffffff;
+background-color: #003366;
+border-color: #003366;
+text-decoration: none;
+}
+
+#squaretab li a#current {
+background: white;
+color: black;
+}
+
+.blogcalendar * {
+    font-family:verdana, arial, sans-serif;
+    font-size:x-small;
+    font-weight:normal;
+    line-height:140%;
+    padding:2px;
+}
+
+
+table.blogcalendar {
+    border: 1px solid #3c78b5;
+}
+
+.blogcalendar th.calendarhead, a.calendarhead {
+    font-size:x-small;
+    font-weight:bold;
+    padding:2px;
+    text-transform:uppercase;
+    background-color: #3c78b5;
+    color: #ffffff;
+    letter-spacing: .3em;
+    text-transform: uppercase;
+}
+
+.calendarhead:visited {color: white;}
+.calendarhead:active {color: white;}
+.calendarhead:hover {color: white;}
+
+.blogcalendar th {
+    font-size:x-small;
+    font-weight:bold;
+    padding:2px;
+    background-color:#f0f0f0;
+}
+
+.blogcalendar td {
+    font-size:x-small;
+    font-weight:normal;
+}
+
+.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
+.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
+.searchItem { padding: 1px 4px 1px 4px; }
+.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }
+
+/* permissions page styles */
+.permissionHeading {
+    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
+}
+.permissionTab {
+    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
+}
+.permissionSuperTab {
+    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
+}
+.permissionCell {
+    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
+}
+
+/* warning panel */
+.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
+/* alert panel */
+.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
+
+/* side menu highlighting (e.g. space content screen) */
+.optionPadded { padding: 2px; }
+.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
+.optionSelected a { font-weight: bold; text-decoration: none; color: black; }
+
+/* information macros */
+.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
+.informationMacroPadding { padding: 5px 0 0 5px; }
+
+table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
+    border: none;
+}
+
+table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}
+
+/* styles for links in the top bar */
+.topBarDiv a:link {color: #ffffff;}
+.topBarDiv a:visited {color: #ffffff;}
+.topBarDiv a:active {color: #ffffff;}
+.topBarDiv a:hover {color: #ffffff;}
+.topBarDiv {color: #ffffff;}
+
+.topBar {
+    background-color: #003366;
+}
+
+
+/* styles for extended operations */
+.greyLinks a:link {color: #666666; text-decoration:underline;}
+.greyLinks a:visited {color: #666666; text-decoration:underline;}
+.greyLinks a:active {color: #666666; text-decoration:underline;}
+.greyLinks a:hover {color: #666666; text-decoration:underline;}
+.greyLinks {color: #666666; display:block; padding: 10px}
+
+.logoSpaceLink {color: #999999; text-decoration: none}
+.logoSpaceLink a:link {color: #999999; text-decoration: none}
+.logoSpaceLink a:visited {color: #999999; text-decoration: none}
+.logoSpaceLink a:active {color: #999999; text-decoration: none}
+.logoSpaceLink a:hover {color: #003366; text-decoration: none}
+
+/* basic panel (basicpanel.vmd) style */
+.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
+.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
+.basicPanelBody {padding: 5px; margin: 0px}
+
+.separatorLinks a:link {color: white}
+.separatorLinks a:visited {color: white}
+.separatorLinks a:active {color: white}
+
+.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}
+
+div.headerField {
+    float: left;
+    width: auto;
+    height: 100%;
+}
+
+.headerFloat {
+    margin-left: auto;
+    width: 50%;
+}
+
+.headerFloatLeft {
+    float: left;
+    margin-right: 20px;
+    margin-bottom: 10px;
+}
+
+#headerRow {
+    padding: 10px;
+}
+
+div.license-personal {
+   background-color: #003366;
+   color: #ffffff;
+}
+
+div.license-personal a {
+   color: #ffffff;
+}
+
+.greyFormBox {
+    border: 1px solid #cccccc;
+    padding: 5px;
+}
+
+/* IE automatically adds a margin before and after form tags. Use this style to remove that */
+.marginlessForm {
+    margin: 0px;
+}
+
+.openPageHighlight {
+    background-color: #ffffcc;
+    padding: 2px;
+    border: 1px solid #ddd;
+}
+
+.editPageInsertLinks, .editPageInsertLinks a
+{
+    color: #666666;
+    font-weight: bold;
+    font-size: 10px;
+}
+
+/* Style for label heatmap. */
+.top10 a {
+    font-weight: bold;
+    font-size: 2em;
+    color: #003366;
+}
+.top25 a {
+    font-weight: bold;
+    font-size: 1.6em;
+    color: #003366;
+}
+.top50 a {
+    font-size: 1.4em;
+    color: #003366;
+}
+.top100 a {
+    font-size: 1.2em;
+    color: #003366;
+}
+
+.heatmap {
+    list-style:none;
+    width: 95%;
+    margin: 0px auto;
+}
+
+.heatmap a {
+    text-decoration:none;
+}
+
+.heatmap a:hover {
+    text-decoration:underline;
+}
+
+.heatmap li {
+    display: inline;
+}
+
+.minitab {
+padding: 3px 0px 3px 8px;
+margin-left: 0;
+margin-top: 1px;
+margin-bottom: 0px;
+border-bottom: 1px solid #3c78b5;
+font: bold 9px Verdana, sans-serif;
+text-decoration: none;
+float:none;
+}
+.selectedminitab {
+padding: 3px 0.5em;
+margin-left: 3px;
+margin-top: 1px;
+border: 1px solid #3c78b5;
+background: white;
+border-bottom: 1px solid white;
+color: #000000;
+text-decoration: none;
+}
+.unselectedminitab {
+padding: 3px 0.5em;
+margin-left: 3px;
+margin-top: 1px;
+border: 1px solid #3c78b5;
+border-bottom: none;
+background: #3c78b5;
+color: #ffffff;
+text-decoration: none;
+}
+
+a.unselectedminitab:hover {
+color: #ffffff;
+background: #003366;
+border-color: #003366;
+}
+
+a.unselectedminitab:link { color: white; }
+a.unselectedminitab:visited { color: white; }
+
+a.selectedminitab:link { color: black; }
+a.selectedminitab:visited { color: black; }
+
+.linkerror { background-color: #fcc;}
+
+a.labelOperationLink:link {text-decoration: underline}
+a.labelOperationLink:active {text-decoration: underline}
+a.labelOperationLink:visited {text-decoration: underline}
+a.labelOperationLink:hover {text-decoration: underline}
+
+a.newLabel:link {background-color: #ddffdd}
+a.newLabel:active {background-color: #ddffdd}
+a.newLabel:visited {background-color: #ddffdd}
+a.newLabel:hover {background-color: #ddffdd}
+
+ul.square {list-style-type: square}
+
+.inline-control-link {
+    background: #ffc;
+    font-size: 9px;
+    color: #666;
+    padding: 2px;
+    text-transform: uppercase;
+    text-decoration: none;
+}
+
+
+.inline-control-link a:link {text-decoration: none}
+.inline-control-link a:active {text-decoration: none}
+.inline-control-link a:visited {text-decoration: none}
+.inline-control-link a:hover {text-decoration: none}
+
+.inline-control-link {
+    background: #ffc;
+    font-size: 9px;
+    color: #666;
+    padding: 2px;
+    text-transform: uppercase;
+    text-decoration: none;
+    cursor: pointer;
+}
+
+div.auto_complete {
+    width: 350px;
+    background: #fff;
+}
+div.auto_complete ul {
+    border: 1px solid #888;
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    list-style-type: none;
+}
+div.auto_complete ul li {
+    margin: 0;
+    padding: 3px;
+}
+div.auto_complete ul li.selected {
+    background-color: #ffb;
+}
+div.auto_complete ul strong.highlight {
+    color: #800;
+    margin: 0;
+    padding: 0;
+}
+
+/******* Edit Page Styles *******/
+.toogleFormDiv{
+    border:1px solid #A7A6AA;
+    background-color:white;
+    padding:5px;
+    margin-top: 5px;
+}
+
+.toogleInfoDiv{
+    border:1px solid #A7A6AA;
+    background-color:white;
+    display:none;
+    padding:5px;
+    margin-top: 10px;
+}
+
+.inputSection{
+    margin-bottom:20px;
+}
+
+#editBox{
+   border:1px solid lightgray;
+   background-color:#F0F0F0;
+}
+
+/******* Left Navigation Theme Styles ********/
+.leftnav li a {
+    text-decoration:none;
+    color:white;
+    margin:0px;
+    display:block;
+    padding:2px;
+    padding-left:5px;
+    background-color: #3c78b5;
+    border-top:1px solid #3c78b5;
+}
+
+.leftnav li a:active {color:white;}
+.leftnav li a:visited {color:white;}
+.leftnav li a:hover {background-color: #003366; color:white;}
diff --git a/manual/src/main/webapp/images/asf-logo.png b/manual/src/main/webapp/images/asf-logo.png
new file mode 100644
index 0000000..d824fab
--- /dev/null
+++ b/manual/src/main/webapp/images/asf-logo.png
Binary files differ
diff --git a/manual/src/main/webapp/images/bg.png b/manual/src/main/webapp/images/bg.png
new file mode 100644
index 0000000..878a84f
--- /dev/null
+++ b/manual/src/main/webapp/images/bg.png
Binary files differ
diff --git a/manual/src/main/webapp/images/bg02-blue-left.png b/manual/src/main/webapp/images/bg02-blue-left.png
new file mode 100644
index 0000000..057efdf
--- /dev/null
+++ b/manual/src/main/webapp/images/bg02-blue-left.png
Binary files differ
diff --git a/manual/src/main/webapp/images/bg02-blue-right.png b/manual/src/main/webapp/images/bg02-blue-right.png
new file mode 100644
index 0000000..edf9a9d
--- /dev/null
+++ b/manual/src/main/webapp/images/bg02-blue-right.png
Binary files differ
diff --git a/manual/src/main/webapp/images/bg02-white-left-nogr.png b/manual/src/main/webapp/images/bg02-white-left-nogr.png
new file mode 100644
index 0000000..1c5186c
--- /dev/null
+++ b/manual/src/main/webapp/images/bg02-white-left-nogr.png
Binary files differ
diff --git a/manual/src/main/webapp/images/bg02-white-right-nogr.png b/manual/src/main/webapp/images/bg02-white-right-nogr.png
new file mode 100644
index 0000000..9734def
--- /dev/null
+++ b/manual/src/main/webapp/images/bg02-white-right-nogr.png
Binary files differ
diff --git a/manual/src/main/webapp/images/big-bullet.png b/manual/src/main/webapp/images/big-bullet.png
new file mode 100644
index 0000000..f036db5
--- /dev/null
+++ b/manual/src/main/webapp/images/big-bullet.png
Binary files differ
diff --git a/manual/src/main/webapp/images/left-box-bottom.png b/manual/src/main/webapp/images/left-box-bottom.png
new file mode 100644
index 0000000..0495248
--- /dev/null
+++ b/manual/src/main/webapp/images/left-box-bottom.png
Binary files differ
diff --git a/manual/src/main/webapp/images/left-box-right.png b/manual/src/main/webapp/images/left-box-right.png
new file mode 100644
index 0000000..2698074
--- /dev/null
+++ b/manual/src/main/webapp/images/left-box-right.png
Binary files differ
diff --git a/manual/src/main/webapp/images/left-box-top.png b/manual/src/main/webapp/images/left-box-top.png
new file mode 100644
index 0000000..e1fc26e
--- /dev/null
+++ b/manual/src/main/webapp/images/left-box-top.png
Binary files differ
diff --git a/manual/src/main/webapp/images/smx-logo.png b/manual/src/main/webapp/images/smx-logo.png
new file mode 100644
index 0000000..ce2332a
--- /dev/null
+++ b/manual/src/main/webapp/images/smx-logo.png
Binary files differ
diff --git a/manual/src/main/webapp/index.conf b/manual/src/main/webapp/index.conf
new file mode 100644
index 0000000..63761bc
--- /dev/null
+++ b/manual/src/main/webapp/index.conf
@@ -0,0 +1,4 @@
+h1. Apache ServiceMix
+
+This project contains documentation about Apache ServiceMix 5.
+
diff --git a/manual/src/main/webapp/manual.conf b/manual/src/main/webapp/manual.conf
new file mode 100644
index 0000000..d3900ad
--- /dev/null
+++ b/manual/src/main/webapp/manual.conf
@@ -0,0 +1,29 @@
+{attributes:layout=/WEB-INF/scalate/layouts/print.ssp}
+
+{div:class=title}
+!/images/smx-logo.png!
+\\
+\\
+\\
+\\
+Apache Karaf
+Users' Guide
+\\
+\\
+\\
+\\
+{div}
+
+{div:class=copyright-section}
+Copyright 2011 The Apache Software Foundation
+{div}
+
+
+{div:class=toc-title}
+Table of contents
+{div}
+
+{toc:maxLevel=2}
+
+{include:index.conf}
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..eb81156
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>9</version>
+    </parent>
+
+    <groupId>org.apache.servicemix</groupId>
+    <artifactId>servicemix-parent</artifactId>
+    <packaging>pom</packaging>
+    <version>5.0.0-SNAPSHOT</version>
+    <name>Apache ServiceMix</name>
+    <inceptionYear>2005</inceptionYear>
+
+    <properties>
+        <camel-version>2.8-SNAPSHOT</camel-version>
+        <karaf-version>2.2.1</karaf-version>
+        <scala-version>2.9.0-1</scala-version>
+        <scala-plugin-version>2.15.0</scala-plugin-version>
+        <scalate-version>1.5.0</scalate-version>
+        <jersey-version>1.7</jersey-version>
+        <logback-version>0.9.28</logback-version>
+        <jetty-version>7.4.2.v20110526</jetty-version>
+        <jersey-version>1.7</jersey-version>
+        <scalatest-version>1.4.1</scalatest-version>
+        <junit-version>4.8.1</junit-version>
+        <slf4j-version>1.6.1</slf4j-version>
+        <maven-wagon-version>1.0-beta-6</maven-wagon-version>
+        <wikitext-version>1.3</wikitext-version>
+        <osgi-version>4.2.0</osgi-version>
+        <scalamd-version>1.5</scalamd-version>
+        <jaxb-version>2.2.3</jaxb-version>
+        <servicemix-version>${project.version}</servicemix-version>
+    </properties>
+
+    <modules>
+        <module>core</module>
+        <module>console</module>
+        <module>manual</module>
+        <module>assembly</module>
+    </modules>
+
+    <dependencies>
+
+        <!-- test -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.scalatest</groupId>
+            <artifactId>scalatest_2.9.0</artifactId>
+            <version>${scalatest-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>${slf4j-version}</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <repositories>
+        <repository>
+          <id>repo1.maven</id>
+          <name>Maven Central Repo</name>
+          <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+        <repository>
+          <id>java.net.m2</id>
+          <name>java.net Maven 2 Repo</name>
+          <url>http://download.java.net/maven/2</url>
+        </repository>
+    </repositories>
+
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-core</artifactId>
+                <version>${camel-version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-scala</artifactId>
+                <version>${camel-version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.scala-lang</groupId>
+                <artifactId>scala-library</artifactId>
+                <version>${scala-version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.scala-lang</groupId>
+                <artifactId>scala-compiler</artifactId>
+                <version>${scala-version}</version>
+            </dependency>
+            <dependency>
+                 <groupId>org.fusesource.scalamd</groupId>
+                 <artifactId>scalamd</artifactId>
+                 <version>${scalamd-version}</version>
+             </dependency>
+             <dependency>
+                 <groupId>org.fusesource.scalate</groupId>
+                 <artifactId>scalate-util</artifactId>
+                 <version>${scalate-version}</version>
+             </dependency>
+             <dependency>
+                 <groupId>com.sun.jersey</groupId>
+                 <artifactId>jersey-server</artifactId>
+                 <version>${jersey-version}</version>
+             </dependency>
+             <dependency>
+                 <groupId>com.sun.jersey</groupId>
+                 <artifactId>jersey-client</artifactId>
+                 <version>${jersey-version}</version>
+             </dependency>
+             <dependency>
+                 <groupId>com.sun.jersey</groupId>
+                 <artifactId>jersey-json</artifactId>
+                 <version>${jersey-version}</version>
+             </dependency>
+             <dependency>
+                 <groupId>com.sun.xml.bind</groupId>
+                 <artifactId>jaxb-impl</artifactId>
+                 <version>${jaxb-version}</version>
+             </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.scala-tools</groupId>
+                    <artifactId>maven-scala-plugin</artifactId>
+                    <version>${scala-plugin-version}</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>compile</goal>
+                                <goal>testCompile</goal>
+                            </goals>
+                            <configuration>
+                                <args>
+                                    <arg>-deprecation</arg>
+                                    <arg>-P:continuations:enable</arg>
+                                </args>
+                                <compilerPlugins>
+                                    <compilerPlugin>
+                                        <groupId>org.scala-lang.plugins</groupId>
+                                        <artifactId>continuations</artifactId>
+                                        <version>${scala-version}</version>
+                                    </compilerPlugin>
+                                    <compilerPlugin>
+                                        <groupId>org.fusesource.jvmassert</groupId>
+                                        <artifactId>jvmassert</artifactId>
+                                        <version>1.1</version>
+                                    </compilerPlugin>
+                                </compilerPlugins>
+                            </configuration>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <jvmArgs>
+                            <jvmArg>-Xmx1024m</jvmArg>
+                            <jvmArg>-Xss8m</jvmArg>
+                        </jvmArgs>
+                        <scalaVersion>${scala-version}</scalaVersion>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-war-plugin</artifactId>
+                    <version>2.1.1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <version>2.3.5</version>
+                </plugin>
+             </plugins>
+        </pluginManagement>
+    </build>
+
+</project>
+