Rework javadoc
diff --git a/doclava-style/assets/customizations.css b/doclava-style/assets/customizations.css
new file mode 100644
index 0000000..477b11f
--- /dev/null
+++ b/doclava-style/assets/customizations.css
@@ -0,0 +1,47 @@
+#header {
+  background-color: #9E88B0;
+  border-bottom: 3px solid #9E88B0;
+}
+#masthead-title {
+  font-family: courier, monospace;
+  color: #FFFFFF;
+}
+#search_filtered .jd-selected {
+  background-color: #746F90;
+}
+#search_filtered_div {
+  border: 1px solid #746F90;
+}
+input.gsc-input {
+  border: 1px solid #E2D7E7;
+}
+#resize-packages-nav {
+  height: 225px;
+}
+#packages-nav {
+  height: 225px;
+}
+#side-nav .selected {
+  background-color: #746F90;
+}
+#index-links .selected {
+  background-color: #FFFFFF;
+}
+#jd-header {
+  background-color: #E2D7E7;
+}
+th {
+  background-color: #E2D7E7;
+}
+tr.alt-color {
+  background-color: #FAF7FD !important;
+}
+a, a:link, a code, a:link code {
+  color: #5C3566;
+}
+a:active, a:active code {
+  color: #f00;
+} 
+a:visited, a:visited code {
+  color: #5C3566;
+}
diff --git a/doclava-style/components/left_nav.cs b/doclava-style/components/left_nav.cs
new file mode 100644
index 0000000..e6e031f
--- /dev/null
+++ b/doclava-style/components/left_nav.cs
@@ -0,0 +1,70 @@
+<?cs # The default side navigation for the reference docs ?><?cs 
+def:custom_left_nav() ?>
+  <div class="g-section g-tpl-240" id="body-content">
+    <div class="g-unit g-first side-nav-resizable" id="side-nav">
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav">
+              <div id="index-links">
+                <a href="<?cs var:toroot ?>packages.html" <?cs if:(page.title == "Package Index") ?>class="selected"<?cs /if ?> >Package Index</a> | 
+                <a href="<?cs var:toroot ?>classes.html" <?cs if:(page.title == "Class Index") ?>class="selected"<?cs /if ?>>Class Index</a>
+              </div>
+              <ul>
+                <?cs call:package_link_list(docs.packages) ?>
+              </ul><br/>
+            </div> <!-- end packages -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav"><?cs 
+            if:subcount(class.package) ?>
+            <ul>
+              <?cs call:list("Interfaces", class.package.interfaces) ?>
+              <?cs call:list("Classes", class.package.classes) ?>
+              <?cs call:list("Annotations", class.package.annotations) ?>
+              <?cs call:list("Enums", class.package.enums) ?>
+              <?cs call:list("Exceptions", class.package.exceptions) ?>
+              <?cs call:list("Errors", class.package.errors) ?>
+            </ul><?cs 
+            elif:subcount(package) ?>
+            <ul>
+              <?cs call:class_link_list("Interfaces", package.interfaces) ?>
+              <?cs call:class_link_list("Classes", package.classes) ?>
+              <?cs call:class_link_list("Annotations", package.annotations) ?>
+              <?cs call:class_link_list("Enums", package.enums) ?>
+              <?cs call:class_link_list("Exceptions", package.exceptions) ?>
+              <?cs call:class_link_list("Errors", package.errors) ?>
+            </ul><?cs 
+            else ?>
+              <script>
+                /*addLoadEvent(maxPackageHeight);*/
+              </script>
+              <p style="padding:10px">Select a package to view its members</p><?cs 
+            /if ?><br/>
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none">
+          <div id="index-links">
+            <a href="<?cs var:toroot ?>packages.html" <?cs if:(page.title == "Package Index") ?>class="selected"<?cs /if ?> >Package Index</a> | 
+            <a href="<?cs var:toroot ?>classes.html" <?cs if:(page.title == "Class Index") ?>class="selected"<?cs /if ?>>Class Index</a>
+          </div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+    </div> <!-- end side-nav -->
+    <script>
+      if (!isMobile) {
+        <!-- $("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav"); -->
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("<?cs var:toroot ?>");
+        } else {
+          addLoadEvent(function() {
+            scrollIntoView("packages-nav");
+            scrollIntoView("classes-nav");
+          });
+        }
+        $("#swapper").css({borderBottom:"2px solid #aaa"});
+      } else {
+        swapNav(); // tree view should be used on mobile
+      }
+    </script><?cs 
+/def ?>
diff --git a/doclava-style/head_tag.cs b/doclava-style/head_tag.cs
new file mode 100644
index 0000000..55a5581
--- /dev/null
+++ b/doclava-style/head_tag.cs
@@ -0,0 +1,41 @@
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<?cs if:project.name ?>
+  <meta name="description" content="Javadoc API documentation for <?cs var:project.name ?>." />
+<?cs else ?>
+  <meta name="description" content="Javadoc API documentation." />
+<?cs /if ?>
+<!-- <link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" /> -->
+<title>
+<?cs if:page.title ?>
+  <?cs var:page.title ?>
+<?cs /if ?>
+<?cs if:project.name ?>
+| <?cs var:project.name ?>
+<?cs /if ?>
+</title>
+<link href="<?cs var:toassets ?>doclava-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="<?cs var:toassets ?>customizations.css" rel="stylesheet" type="text/css" />
+<script src="<?cs var:toassets ?>search_autocomplete.js" type="text/javascript"></script>
+<script src="<?cs var:toassets ?>jquery-resizable.min.js" type="text/javascript"></script>
+<script src="<?cs var:toassets ?>doclava-developer-docs.js" type="text/javascript"></script>
+<script src="<?cs var:toassets ?>prettify.js" type="text/javascript"></script>
+<script type="text/javascript">
+  setToRoot("<?cs var:toroot ?>", "<?cs var:toassets ?>");
+</script><?cs 
+if:reference ?>
+<script src="<?cs var:toassets ?>doclava-developer-reference.js" type="text/javascript"></script>
+<script src="<?cs var:toassets ?>navtree_data.js" type="text/javascript"></script><?cs 
+/if ?>
+<script src="<?cs var:toassets ?>customizations.js" type="text/javascript"></script>
+<noscript>
+  <style type="text/css">
+    html,body{overflow:auto;}
+    #body-content{position:relative; top:0;}
+    #doc-content{overflow:visible;border-left:3px solid #666;}
+    #side-nav{padding:0;}
+    #side-nav .toggle-list ul {display:block;}
+    #resize-packages-nav{border-bottom:3px solid #666;}
+  </style>
+</noscript>
+</head>
diff --git a/doclava-style/package.cs b/doclava-style/package.cs
new file mode 100644
index 0000000..a6bcac2
--- /dev/null
+++ b/doclava-style/package.cs
@@ -0,0 +1,55 @@
+<?cs include:"doctype.cs" ?>
+<?cs include:"macros.cs" ?>
+<html>
+<?cs include:"head_tag.cs" ?>
+<body class="<?cs var:package.since.key ?>">
+<?cs include:"header.cs" ?>
+
+<div class="g-unit" id="doc-content">
+
+<div id="api-info-block">
+<div class="api-level">
+  <?cs call:since_tags(package) ?>
+  <?cs call:federated_refs(package) ?>
+</div>
+</div>
+
+<div id="jd-header">
+  package
+  <h1><?cs var:package.name ?></h1>
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-<?cs var:package.since.key ?>">
+
+<?cs if:subcount(package.descr) ?>
+  <div class="jd-descr">
+    <?cs call:tag_list(package.descr) ?>
+  </div>
+<?cs /if ?>
+
+<?cs def:class_table(label, classes) ?>
+  <?cs if:subcount(classes) ?>
+    <h2><?cs var:label ?></h2>
+    <div class="jd-sumtable">
+    <?cs call:class_link_table(classes) ?>
+    </div>
+  <?cs /if ?>
+<?cs /def ?>
+
+<?cs call:class_table("Interfaces", package.interfaces) ?>
+<?cs call:class_table("Classes", package.classes) ?>
+<?cs call:class_table("Annotations", package.annotations) ?>
+<?cs call:class_table("Enums", package.enums) ?>
+<?cs call:class_table("Exceptions", package.exceptions) ?>
+<?cs call:class_table("Errors", package.errors) ?>
+
+<?cs include:"footer.cs" ?>
+</div><!-- end jd-content -->
+</div><!-- doc-content -->
+
+<?cs include:"trailer.cs" ?>
+
+</body>
+</html>
diff --git a/org.eclipse.sisu.plexus.tests/pom.xml b/org.eclipse.sisu.plexus.tests/pom.xml
index 303c14e..324bdfe 100644
--- a/org.eclipse.sisu.plexus.tests/pom.xml
+++ b/org.eclipse.sisu.plexus.tests/pom.xml
@@ -58,6 +58,10 @@
         </configuration>
       </plugin>
       <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration combine.self="override" />
+      </plugin>
+      <plugin>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
           <execution>
diff --git a/org.eclipse.sisu.plexus/pom.xml b/org.eclipse.sisu.plexus/pom.xml
index fa0fd60..68097b0 100644
--- a/org.eclipse.sisu.plexus/pom.xml
+++ b/org.eclipse.sisu.plexus/pom.xml
@@ -119,71 +119,6 @@
         </includes>
       </resource>
     </resources>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>animal-sniffer-maven-plugin</artifactId>
-        <version>1.9</version>
-        <configuration>
-          <signature>
-            <groupId>org.codehaus.mojo.signature</groupId>
-            <artifactId>java15</artifactId>
-            <version>1.0</version>
-          </signature>
-        </configuration>
-        <executions>
-          <execution>
-            <id>checkJava5</id>
-            <phase>package</phase>
-            <goals>
-              <goal>check</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-source-plugin</artifactId>
-        <version>2.2.1</version>
-        <executions>
-          <execution>
-            <id>plugin-source</id>
-            <goals>
-              <goal>jar-no-fork</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.9</version>
-        <configuration>
-          <docletArtifact>
-            <groupId>com.google.doclava</groupId>
-            <artifactId>doclava</artifactId>
-            <version>1.0.5</version>
-          </docletArtifact>
-          <doclet>com.google.doclava.Doclava</doclet>
-          <!--
-           | bootclasspath required by Sun's JVM
-          -->
-          <bootclasspath>${sun.boot.class.path}</bootclasspath>
-          <excludePackageNames>*.internal</excludePackageNames>
-          <additionalparam>
-            -quiet
-            -federate JDK http://download.oracle.com/javase/6/docs/api/index.html?
-            -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml
-            -federate Guice http://google-guice.googlecode.com/svn/trunk/javadoc/
-            -hdf project.name "${project.name}"
-            -d ${project.build.directory}/apidocs
-          </additionalparam>
-          <useStandardDocletOptions>false</useStandardDocletOptions>
-          <!--
-           | Apple's JVM sometimes requires more memory
-          -->
-          <additionalJOption>-J-Xmx1024m</additionalJOption>
-        </configuration>
-      </plugin>
-    </plugins>
   </build>
 
 </project>
diff --git a/pom.xml b/pom.xml
index ab71fe8..eeb80dd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,12 +91,43 @@
     <pluginManagement>
       <plugins>
         <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>animal-sniffer-maven-plugin</artifactId>
+          <version>1.9</version>
+          <configuration>
+            <signature>
+              <groupId>org.codehaus.mojo.signature</groupId>
+              <artifactId>java15</artifactId>
+              <version>1.0</version>
+            </signature>
+          </configuration>
+          <executions>
+            <execution>
+              <id>check-java5</id>
+              <phase>package</phase>
+              <goals>
+                <goal>check</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <groupId>org.eclipse.tycho</groupId>
+          <artifactId>target-platform-configuration</artifactId>
+          <version>${tycho-version}</version>
+        </plugin>
+        <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-compiler-plugin</artifactId>
           <version>${tycho-version}</version>
         </plugin>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
+          <artifactId>tycho-maven-plugin</artifactId>
+          <version>${tycho-version}</version>
+        </plugin>
+        <plugin>
+          <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-p2-plugin</artifactId>
           <version>${tycho-version}</version>
         </plugin>
@@ -107,18 +138,16 @@
         </plugin>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
-          <artifactId>target-platform-configuration</artifactId>
-          <version>${tycho-version}</version>
-        </plugin>
-        <plugin>
-          <groupId>org.eclipse.tycho</groupId>
-          <artifactId>tycho-maven-plugin</artifactId>
-          <version>${tycho-version}</version>
-        </plugin>
-        <plugin>
-          <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-source-plugin</artifactId>
           <version>${tycho-version}</version>
+          <executions>
+            <execution>
+              <id>plugin-source</id>
+              <goals>
+                <goal>plugin-source</goal>
+              </goals>
+            </execution>
+          </executions>
         </plugin>
         <plugin>
           <artifactId>maven-clean-plugin</artifactId>
@@ -160,6 +189,37 @@
           </configuration>
         </plugin>
         <plugin>
+          <artifactId>maven-javadoc-plugin</artifactId>
+          <version>2.9</version>
+          <configuration>
+            <docletArtifact>
+              <groupId>com.google.doclava</groupId>
+              <artifactId>doclava</artifactId>
+              <version>1.0.5</version>
+            </docletArtifact>
+            <doclet>com.google.doclava.Doclava</doclet>
+            <!--
+             | bootclasspath required by Sun's JVM
+            -->
+            <bootclasspath>${sun.boot.class.path}</bootclasspath>
+            <excludePackageNames>*.internal</excludePackageNames>
+            <additionalparam>
+              -quiet
+              -federate JDK http://download.oracle.com/javase/6/docs/api/index.html?
+              -federationxml JDK http://doclava.googlecode.com/svn/static/api/openjdk-6.xml
+              -federate Guice http://google-guice.googlecode.com/svn/trunk/javadoc/
+              -hdf project.name "${project.name}"
+              -templatedir ${basedir}/../doclava-style
+              -d ${project.build.directory}/apidocs
+            </additionalparam>
+            <useStandardDocletOptions>false</useStandardDocletOptions>
+            <!--
+             | Apple's JVM sometimes requires more memory
+            -->
+            <additionalJOption>-J-Xmx1024m</additionalJOption>
+          </configuration>
+        </plugin>
+        <plugin>
           <artifactId>maven-site-plugin</artifactId>
           <version>3.3</version>
         </plugin>
@@ -176,7 +236,7 @@
         </property>
       </activation>
       <build>
-        <!-- ignore enforcer goals that aren't covered by m2e -->
+        <!-- ignore various mojos that aren't covered by m2e -->
         <pluginManagement>
           <plugins>
             <plugin>