Splitting aggregate javadoc generation into a separate project and pom.xml file.
diff --git a/docs/external.xml b/docs/external.xml
new file mode 100644
index 0000000..959b473
--- /dev/null
+++ b/docs/external.xml
@@ -0,0 +1,59 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <prerequisites>
+        <maven>3.0.0</maven>
+    </prerequisites>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-docs-external</artifactId>
+    <packaging>pom</packaging>
+
+    <description>ONOS Java API documentation</description>
+
+    <modules>
+        <module>..</module>
+    </modules>
+
+    <url>http://onlab.us/</url>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.10.1</version>
+                <configuration>
+                    <show>package</show>
+                    <excludePackageNames>org.onlab.thirdparty:*.impl:*.impl.*:org.onlab.onos.provider.*:org.onlab.onos.gui:org.onlab.onos.rest:org.onlab.onos.cli*:org.onlab.onos.tvue:org.onlab.onos.foo:org.onlab.onos.mobility:org.onlab.onos.proxyarp:org.onlab.onos.fwd:org.onlab.onos.ifwd:org.onlab.onos.optical:org.onlab.onos.config:org.onlab.onos.calendar:org.onlab.onos.sdnip*:org.onlab.onos.metrics</excludePackageNames>
+                    <docfilessubdirs>true</docfilessubdirs>
+                    <doctitle>ONOS Java API</doctitle>
+                    <groups>
+                        <group>
+                            <title>Network Model &amp; Services</title>
+                            <packages>
+                                org.onlab.onos:org.onlab.onos.*
+                            </packages>
+                        </group>
+                        <group>
+                            <title>Utilities</title>
+                            <packages>
+                                org.onlab.*
+                            </packages>
+                        </group>
+                    </groups>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/docs/pom.xml b/docs/pom.xml
new file mode 100644
index 0000000..3a38f13
--- /dev/null
+++ b/docs/pom.xml
@@ -0,0 +1,85 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <prerequisites>
+        <maven>3.0.0</maven>
+    </prerequisites>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-docs</artifactId>
+    <packaging>pom</packaging>
+
+    <description>ONOS Java API documentation</description>
+
+    <modules>
+        <module>..</module>
+    </modules>
+
+    <url>http://onlab.us/</url>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.10.1</version>
+                <configuration>
+                    <show>package</show>
+                    <docfilessubdirs>true</docfilessubdirs>
+                    <doctitle>ONOS Java API</doctitle>
+                    <groups>
+                        <group>
+                            <title>Network Model &amp; Services</title>
+                            <packages>
+                                org.onlab.onos:org.onlab.onos.*
+                            </packages>
+                        </group>
+                        <group>
+                            <title>Core Subsystems</title>
+                            <packages>
+                                org.onlab.onos.impl:org.onlab.onos.cluster.impl:org.onlab.onos.net.device.impl:org.onlab.onos.net.link.impl:org.onlab.onos.net.host.impl:org.onlab.onos.net.topology.impl:org.onlab.onos.net.packet.impl:org.onlab.onos.net.flow.impl:org.onlab.onos.store.trivial.*:org.onlab.onos.net.*.impl:org.onlab.onos.event.impl:org.onlab.onos.store.*:org.onlab.onos.net.intent.impl:org.onlab.onos.net.proxyarp.impl:org.onlab.onos.mastership.impl:org.onlab.onos.json:org.onlab.onos.json.*:org.onlab.onos.provider.host.impl:org.onlab.onos.provider.lldp.impl:org.onlab.onos.net.statistic.impl
+                            </packages>
+                        </group>
+                        <group>
+                            <title>OpenFlow Providers &amp; Controller
+                            </title>
+                            <packages>
+                                org.onlab.onos.provider.of.*:org.onlab.onos.openflow.*
+                            </packages>
+                        </group>
+                        <group>
+                            <title>Utilities</title>
+                            <packages>
+                                org.onlab.*
+                            </packages>
+                        </group>
+                        <group>
+                            <title>GUI, REST &amp; Command-Line</title>
+                            <packages>
+                                org.onlab.onos.gui:org.onlab.onos.rest:org.onlab.onos.cli:org.onlab.onos.gui.*:org.onlab.onos.rest.*:org.onlab.onos.cli.*
+                            </packages>
+                        </group>
+                        <group>
+                            <title>Sample Applications</title>
+                            <packages>
+                                org.onlab.onos.tvue:org.onlab.onos.fwd:org.onlab.onos.ifwd:org.onlab.onos.mobility:org.onlab.onos.proxyarp:org.onlab.onos.foo:org.onlab.onos.calendar:org.onlab.onos.sdnip:org.onlab.onos.sdnip.*:org.onlab.onos.optical:org.onlab.onos.optical.*:org.onlab.onos.metrics.*:org.onlab.onos.config
+                            </packages>
+                        </group>
+                    </groups>
+                    <excludePackageNames>org.onlab.thirdparty
+                    </excludePackageNames>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/docs/src/main/javadoc/doc-files/onos-subsystem.png b/docs/src/main/javadoc/doc-files/onos-subsystem.png
new file mode 100644
index 0000000..6144cf0
--- /dev/null
+++ b/docs/src/main/javadoc/doc-files/onos-subsystem.png
Binary files differ
diff --git a/docs/src/main/javadoc/doc-files/onos-tiers.png b/docs/src/main/javadoc/doc-files/onos-tiers.png
new file mode 100644
index 0000000..bbacfc8
--- /dev/null
+++ b/docs/src/main/javadoc/doc-files/onos-tiers.png
Binary files differ
diff --git a/docs/src/main/javadoc/overview.html b/docs/src/main/javadoc/overview.html
new file mode 100644
index 0000000..f50f24d
--- /dev/null
+++ b/docs/src/main/javadoc/overview.html
@@ -0,0 +1,67 @@
+<html>
+<body>
+<p>
+    ONOS architecture is strictly segmented into a <em>protocol-agnostic system
+    core</em> tier and the <em>protocol-aware providers</em> tier as shown in
+    the figure below:<br>
+    <img src="doc-files/onos-tiers.png" alt="ONOS architecture tiers">
+</p>
+
+<p>
+    The <em>ONOS core</em> is responsible for tracking information about the
+    network environment and distributing it to the applications either
+    synchronously via query or asynchronously via listener callbacks. The
+    core is also responsible for persisting select state and synchronizing state
+    among the cluster peers.
+</p>
+
+<p>
+    The <em>protocol-aware providers</em> are responsible for interacting with
+    the network environment using various control and configuration protocols
+    and supplying such sensory data to the core. Some providers may also need to
+    accept control edicts from the core and apply them to the environment
+    using the appropriate protocol-specific means.
+</p>
+
+<p>
+    The following diagram describes a general structure of each ONOS subsystem:
+    <br>
+    <img src="doc-files/onos-subsystem.png" alt="ONOS subsystem structure"><br>
+    For example, the device-subsystem comprises of a core
+    {@link org.onlab.onos.net.device.impl.DeviceManager},
+    which exposes a north-bound
+    {@link org.onlab.onos.net.device.DeviceService} through which applications or other core components
+    can learn about the global infrastructure device inventory and through
+    which they can also subscribe for asynchronous {@link org.onlab.onos.net.device.DeviceEvent}
+    notifications via the {@link org.onlab.onos.net.device.DeviceListener} mechanism. A set of
+    administrative actions can be performed via {@link org.onlab.onos.net.device.DeviceAdminService},
+    e.g. setting mastership role, removing a decommissioned device.
+</p>
+
+<p>
+    On the south-bound side, the core {@link org.onlab.onos.net.device.impl.DeviceManager}
+    exposes a {@link org.onlab.onos.net.device.DeviceProviderRegistry} through which any number of
+    {@link org.onlab.onos.net.device.DeviceProvider} entities can register and in turn obtain a
+    {@link org.onlab.onos.net.device.DeviceProviderService}. Device and port information can then be
+    supplied to the core by each provider through the provider service issued
+    to them. When a provider unregisters, its {@link org.onlab.onos.net.device.DeviceProviderService}
+    will be invalidated and can no longer be used for interacting with the
+    core.
+</p>
+
+<p>
+    Within the core, the tasks of indexing, persisting and synchronizing the
+    global device and port state with the cluster peers falls on the
+    {@link org.onlab.onos.net.device.DeviceStore}.
+</p>
+
+<p>
+    Similar structure applies to the link subsystem, host subsystem and others.
+</p>
+
+<p>
+    <em>More information to come later...</em>
+</p>
+
+</body>
+</html>