diff --git a/pom.xml b/pom.xml
index 5a71852..0beff6c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -153,6 +153,18 @@
                     </dependency>
                 </dependencies>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-site-plugin</artifactId>
+                <version>3.3</version>
+                <dependencies>
+                  <dependency>
+                    <groupId>org.apache.maven.doxia</groupId>
+                    <artifactId>doxia-module-markdown</artifactId>
+                    <version>1.3</version>
+                  </dependency>
+                </dependencies>
+            </plugin>
         </plugins>
     </build>
 
@@ -177,9 +189,7 @@
                         <link>http://ws.apache.org/xmlrpc/apidocs/</link>
                         <link>http://www.csg.is.titech.ac.jp/~chiba/javassist/html</link>
                     </links>
-                    <aggregate>true</aggregate>
                 </configuration>
-
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
new file mode 100644
index 0000000..040dfe7
--- /dev/null
+++ b/src/site/markdown/index.md
@@ -0,0 +1,145 @@
+<!--
+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.
+-->
+
+## Commons Proxy: Dynamic Proxies Made Easy
+
+  The *Proxy* design pattern ([GoF][]) allows you to provide
+  "a surrogate or placeholder for another object to control access to it".
+  Proxies can be used in many ways, some of which are:
+
+  * **Deferred Initialization** -
+     the proxy acts as a "stand-in" for the actual implementation allowing
+     it to be instantiated only when absolutely necessary.
+  * **Security** -
+     the proxy object can verify that the user actually has the permission to
+     execute the method (a la EJB).
+  * **Logging** -
+     the proxy can log evey method invocation, providing valuable debugging
+     information.
+  * **Performance Monitoring** -
+     the proxy can log each method invocation to a performance monitor allowing
+     system administrators to see what parts of the system are potentially
+     bogged down.
+
+  *Commons Proxy* supports dynamic proxy generation using proxy factories,
+  object providers, invokers, and interceptors.
+
+## Proxy Factories
+  A [ProxyFactory][] encapsulates all necessary proxying logic away from your
+  code. Switching proxying techniques/technologies is as simple as using a
+  different proxy factory implementation class.
+  *Commons Proxy* provides several proxy factory implementation modules:
+
+  * [commons-proxy2-jdk][]
+  * [commons-proxy2-cglib][]
+  * [commons-proxy2-javassist][]
+  * [commons-proxy2-asm4][]
+
+  Additionally, the core library provides a proxy factory
+  [implementation][defaultPF] that delegates to instances discoverable using
+  the Java [ServiceLoader][] mechanism (including those provided by the listed
+  modules).
+
+  Proxy factories allow you to create three different types of proxy objects:
+
+  * **Delegator Proxy** - delegates each method invocation to an object
+     provided by an [ObjectProvider][].
+  * **Interceptor Proxy** - allows an [Interceptor][] to intercept each
+     method invocation as it makes its way to the target of the invocation.
+  * **Invoker Proxy** - uses an [Invoker][] to handle all method invocations.
+
+## Object Providers
+  [Object providers][providers] provide the objects which will be the
+  "target" of a proxy. There are two types of object providers:
+
+### Core Object Providers
+  A core object provider provides a core implementation object.
+  *Commons Proxy* supports many different implementations including:
+
+  * **Constant** - Always returns a specific object
+  * **Bean** - Instantiates an object of a specified class each time
+  * **Cloning** - Reflectively calls the public `clone()` method
+                  on a `Cloneable` object
+
+### Decorating Object Providers
+  A decorating object provider decorates the object returned by another
+  provider. *Commons Proxy* provides a few implementations including:
+
+  * **Singleton** - Calls a nested provider at most once, returning that
+                    original value on all subsequent invocations
+
+## Invokers
+  An [Invoker][] handles all method invocations using a single method.
+  *Commons Proxy* provides a few invoker implementations:
+
+  * **Null** - Always returns a `null` (useful for the "Null Object" pattern)
+  * **Duck Typing** - Supports so-called "duck typing" by adapting a class to
+                      an interface it does not implement.
+  * **Invocation Handler Adapter** - Adapts an implementation of the JDK
+[InvocationHandler][] interface as a *Commons Proxy* [Invoker][].
+
+## Interceptors
+  *Commons Proxy* allows you to "intercept" a method invocation using
+  an [Interceptor][]. Interceptors provide *rudimentary* aspect-oriented
+  programming (AOP) support, allowing you to alter the parameters/results
+  of a method invocation without actually changing the implementation of
+  the method itself. *Commons Proxy* provides a few interceptor
+  implementations including:
+
+  * **ObjectProvider** - returns the value from an [ObjectProvider][]
+  * **Throwing** - throws an exception
+  * **Switch** - provides a fluent API to configure the handling
+                 of invoked methods
+
+## Releases
+  The latest version is v1.0. - [Download now!][download]
+
+  For previous releases, see the [Apache archive][archive].
+
+  _**Note:** The 1.x releases are compatible with JDK1.4+._
+
+## Support
+  The [Commons mailing lists][mailing-lists] act as the main support forum.
+  The `user` list is suitable for most library usage queries.
+  The `dev` list is intended for the development discussion.
+  Please remember that the lists are shared between all Commons components,
+  so prefix your email subject with `[proxy]`.
+
+  Issues may be reported via [ASF JIRA][issue-tracking]. Please read the
+  instructions carefully to submit a useful bug report or enhancement request.
+
+[download]: http://commons.apache.org/downloads/download_proxy.cgi
+[archive]: http://archive.apache.org/dist/commons/proxy/
+[mailing-lists]: mail-lists.html
+[issue-tracking]: issue-tracking.html
+
+[commons-proxy2-jdk]: commons-proxy2-jdk/index.html
+[commons-proxy2-cglib]: commons-proxy2-cglib/index.html
+[commons-proxy2-javassist]: commons-proxy2-javassist/index.html
+[commons-proxy2-asm4]: commons-proxy2-asm4/index.html
+[ProxyFactory]: apidocs/org/apache/commons/proxy2/ProxyFactory.html
+[ObjectProvider]: apidocs/org/apache/commons/proxy2/ObjectProvider.html
+[Interceptor]: apidocs/org/apache/commons/proxy2/Interceptor.html
+[Invoker]: apidocs/org/apache/commons/proxy2/Invoker.html
+[defaultPF]: apidocs/org/apache/commons/proxy2/ProxyUtils.html#proxyFactory\(\)
+[providers]: apidocs/org/apache/commons/proxy2/provider/package-summary.html
+
+[ServiceLoader]: http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html
+[InvocationHandler]: http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/InvocationHandler.html
+[GoF]: http://www.amazon.com/exec/obidos/tg/detail/-/0201633612/qid=1125413337/sr=1-1/ref=sr_1_1/104-0714405-6441551?v=glance&amp;s=books
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
deleted file mode 100644
index 2b8b47d..0000000
--- a/src/site/xdoc/index.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-  ~ 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.
-  -->
-
-<document>
-    <properties>
-        <title>Overview</title>
-        <author email="dev AT commons DOT apache DOT org">Apache Commons Development Team</author>
-        <author email="jcarman AT apache DOT org">James Carman</author>
-    </properties>
-
-    <body>
-        <section name="Commons Proxy: Dynamic Proxies Made Easy">
-            <p>
-                The <em>Proxy</em> design pattern (<a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201633612/qid=1125413337/sr=1-1/ref=sr_1_1/104-0714405-6441551?v=glance&amp;s=books">GoF</a>)
-                allows you to provide &quot;a surrogate or placeholder for another object to control access to it&quot;.
-                Proxies can be used in many ways.  Some of which are:
-            </p>
-                <ul>
-                    <li><b>Deferred Initialization</b> - the proxy acts as a "stand-in" for the actual implementation allowing
-                    it to be instantiated only when absolutely necessary.</li>
-                    <li><b>Security</b> - the proxy object can verify that the user actually has the permission to execute
-                    the method (a la EJB).</li>
-                    <li><b>Logging</b> - the proxy can log evey method invocation, providing valuable debugging information.</li>
-                    <li><b>Performance Monitoring</b> - the proxy can log each method invocation to a performance monitor
-                    allowing system administrators to see what parts of the system are potentially bogged down.</li>
-                </ul>
-            <p>
-                <em>Commons Proxy</em> supports dynamic proxy generation using proxy factories, object providers, invokers, and
-                interceptors.
-            </p>
-            <section name="Proxy Factories">
-                <p>
-                    <a href="apidocs/org/apache/commons/proxy/ProxyFactory.html">Proxy factories</a>
-                    encapsulate all necessary proxying logic away from your code.  Switching proxying
-                    techniques/technologies is as simple as using a different proxy factory implementation class.
-                    Currently,  <em>Commons Proxy</em> provides proxy factory implementations using JDK proxies,
-                    <a href="http://cglib.sourceforge.net">CGLIB</a>, and
-                    <a href="http://www.jboss.org/products/javassist">Javassist</a>.  Proxy factories allow you to create
-                    three different types of proxy objects:
-            </p>
-                    <ul>
-                        <li><b>Delegator Proxies</b> - a proxy that merely delegates each method invocation to an
-                            object provided by an <a href="apidocs/org/apache/commons/proxy/ObjectProvider.html">object provider</a>.</li>
-                        <li><b>Interceptor Proxies</b> - a proxy that allows an <a href="apidocs/org/apache/commons/proxy/Interceptor.html">Interceptor</a> to intercept each
-                            method invocation as it makes its way to the target of the invocation.</li>
-                        <li><b>Invoker Proxies</b> - a proxy that uses an
-                            <a href="apidocs/org/apache/commons/proxy/Invoker.html">invoker</a> to handle all method
-                            invocations.</li>
-                    </ul>
-            </section>
-            <section name="Object Providers">
-                <p>
-                    <a href="apidocs/org/apache/commons/proxy/provider/package-summary.html">Object providers</a>
-                    provide the
-                    objects which will be the &quot;target&quot; of a proxy. There are two types of object providers:
-                    <subsection name="Core Object Providers">
-                        <p>
-                        A core object provider provides a core implementation object.  <em>Commons Proxy</em> supports
-                        many different implementations including:
-                        </p>
-                        <table border="0">
-                            <tr><td><b>Constant</b></td><td>Always returns a specific object</td></tr>
-                            <tr><td><b>Bean</b></td><td>Merely instantiates an object of a specified class each time</td></tr>
-                            <tr><td><b>Cloning</b></td><td>Reflectively calls the public clone() method on a Cloneable object</td></tr>
-                            <tr><td><b>Hessian</b></td><td>Returns a <a href="http://www.caucho.com/hessian/index.xtp">Hessian</a>-based service object</td></tr>
-                            <tr><td><b>Burlap</b></td><td>Returns a <a href="http://www.caucho.com/burlap/index.xtp">Burlap</a>-based service object</td></tr>
-                            <tr><td><b>JAX-RPC</b></td><td>Returns a <a href="http://java.sun.com/webservices/jaxrpc/index.jsp">JAX-RPC</a>-based service object</td></tr>
-                            <tr><td><b>Session Bean</b></td><td>Returns a reference to a Session EJB (stateless session beans only)</td></tr>
-                        </table>
-                    </subsection>
-                    <subsection name="Decorating Object Providers">
-                        <p>
-                        A decorating object provider decorates the object returned by another provider.
-                            <em>Commons Proxy</em> provides a few implementations including:
-                        </p>
-                        <table border="0">
-                            <tr><td><b>Singleton</b></td><td>Calls a nested provider at most once, returning that original value on all subsequent invocations</td></tr>
-                        </table>
-
-                    </subsection>
-
-                </p>
-            </section>
-            <section name="Invokers">
-                <p>
-                    An <a href="apidocs/org/apache/commons/proxy/Invoker.html">invoker</a> handles all
-                    method invocations using a single method.  <em>Commons Proxy</em> provides a few invoker implementations:
-                </p>
-                    <table border="0">
-                      <tr><td><b>Null</b></td><td>Always returns a null (useful for the "Null Object" pattern)</td></tr>
-                      <tr><td><b>Apache XML-RPC</b></td><td>Uses <a href="http://ws.apache.org/xmlrpc/">Apache XML-RPC</a> to fulfill the method invocation</td></tr>
-                        <tr><td><b>Duck Typing</b></td><td>Supports &quot;duck typing&quot; by adapting a class to an interface it does not implement.</td></tr>
-                      <tr><td><b>Invocation Handler Adapter</b></td><td>Adapts the JDK <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/InvocationHandler.html">InvocationHandler</a> interface
-                          to the <em>Commons Proxy</em> <a href="apidocs/org/apache/commons/proxy/Invoker.html">Invoker</a> interface.</td></tr>
-                    </table>
-
-            </section>
-            <section name="Interceptors">
-                <p>
-                    <em>Commons Proxy</em> allows you to &quot;intercept&quot; a method invocation using <a href="apidocs/org/apache/commons/proxy/Interceptor.html">Interceptors</a>.
-                    Interceptors provide <em>rudimentary</em> aspect-oriented
-                    programming support, allowing you to alter the results/effects of a method invocation without actually
-                    changing the implementation of the method itself.  <em>Commons Proxy</em> provides a few interceptor
-                    implementations including:
-                </p>
-                    <table border="0">
-                      <tr><td><b>Executor</b></td><td>Uses an
-                      <a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/Executor.html">Executor</a> to execute the method in possibly another thread (only void methods are supported).</td></tr>
-                      <tr><td><b>Logging</b></td><td>Logs all method invocations using the
-                      <a href="http://commons.apache.org/logging/">Apache Commons Logging</a> API</td></tr>
-                      <tr><td><b>Filtered</b></td><td>Optionally intercepts a method invocation based on a
-                      <a href="apidocs/org/apache/commons/proxy/interceptor/MethodFilter.html">method filter</a></td></tr>
-                      <tr><td><b>Method Interceptor Adapter</b></td><td>Adapts the AOP Alliance <a href="http://aopalliance.sourceforge.net/doc/org/aopalliance/intercept/MethodInterceptor.html">MethodInterceptor</a> interface to the
-                          <em>Commons Proxy</em> <a href="apidocs/org/apache/commons/proxy/Interceptor.html">Interceptor</a> interface.</td></tr>
-
-                      </table>
-            </section>
-        </section>
-        <section name="Releases">
-            <p>
-                The latest version is v1.0. -
-                <a href="http://commons.apache.org/downloads/download_proxy.cgi">Download now!</a><br />
-            </p>
-            <p>
-                For previous releases, see the <a href="http://archive.apache.org/dist/commons/proxy/">Apache Archive</a>
-            </p>
-            <p>
-                <i><b>Note:</b> The 1.x releases are compatible with JDK1.4+.</i>
-            </p>
-        </section>
-        <section name="Support">
-            <p>
-                The <a href="mail-lists.html">commons mailing lists</a> act as the main support forum.
-                The user list is suitable for most library usage queries.
-                The dev list is intended for the development discussion.
-                Please remember that the lists are shared between all commons components,
-                so prefix your email subject with [proxy].
-            </p>
-            <p>
-                Issues may be reported via <a href="issue-tracking.html">ASF JIRA</a>.
-                Please read the instructions carefully to submit a useful bug report or enhancement request.
-            </p>
-        </section>
-    </body>
-</document>
