diff --git a/src/site/apt/index.apt.vm b/src/site/apt/index.apt.vm
index e88303d..a09bc21 100644
--- a/src/site/apt/index.apt.vm
+++ b/src/site/apt/index.apt.vm
@@ -25,15 +25,12 @@
 
 NetBeans Module plugin
 
- This m2 plugin is able to create NetBeans module(plugin) artifacts. It registers a new packaging type <<<nbm>>>. Any project with
+ This Apache Maven plugin is able to create Apache NetBeans module(plugin) artifacts. It registers a new packaging type <<<nbm>>>. Any project with
 this packaging will be automatically turned into a NetBeans module project. Additionally it allows to create clusters of modules, generate
 an autoupdate site content or build and assemble an application on top of NetBeans platform.
 
  Note: The <<<nbm:populate-repository>>> goal has been moved to it's own plugin {{{../nb-repository-plugin/index.html}nb-repository-plugin}}.
 
- To get access to a repository with NetBeans.org module artifacts and metadata, add {{{http://bits.netbeans.org/maven2/}http://bits.netbeans.org/maven2/}} repository to your project POM
-or the repository manager you are using. The repository hosts binaries of NetBeans 6.5 and later.
-
  Also see: {{{http://wiki.netbeans.org/NetBeansDeveloperFAQ#Mavenized_Builds}Maven NBM development FAQs}}
 
  Sample <<<pom.xml>>> excerpts for creation of a NetBeans module:
@@ -68,22 +65,7 @@
             </plugin>
         </plugins>
   </build>
-
- ....
-    <!-- this section is important only to access the binaries of NetBeans that you use as dependencies -->
-    <repositories>
-        <repository>
-            <id>netbeans</id>
-            <name>repository hosting netbeans.org api artifacts</name>
-            <url>http://bits.netbeans.org/maven2/</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-    </repositories>
+   
 +-----+
 
  To build the project then, just type
@@ -93,13 +75,13 @@
 +-------------------------------------------------------------------------------+
 
 
-Maven Dependency vs. NetBeans runtime dependency
+Maven Dependency vs. Apache NetBeans runtime dependency
 
- There are important differences between Maven's dependency mechanism and NetBeans runtime dependencies.
-Maven's dependencies are transitive, so at compile time you get not only direct dependencies you declared, but also
+ There are important differences between Maven's dependency mechanism and Apache NetBeans runtime dependencies.
+Apache Maven's dependencies are transitive, so at compile time you get not only direct dependencies you declared, but also
 dependencies of dependencies etc. In NetBeans, the module dependencies are non-transitive by nature, you have to explicitly declare all at runtime.
 Additionally next to module dependencies there are also library jars attached and shipped with the module's main artifact.
-In the NetBeans terminology there is a special sort of modules called "library wrappers". These library wrappers
+In the Apache NetBeans terminology there is a special sort of modules called "library wrappers". These library wrappers
 add the libraries on the module's classpath and allow other modules to depend on the libraries within the IDE's runtime.
 
  The ways in which the nbm-maven-plugin tries to adress these issues has changed over time.
@@ -107,11 +89,11 @@
  The plugin walks the dependency tree to detect and identify module dependencies
 and classpath libraries.
 
-  A maven dependency is turned into a NetBeans runtime dependency when:
+  An Apache Maven dependency is turned into a Apache NetBeans runtime dependency when:
 
-    * for NetBeans module dependencies (dependency jars that have the NetBeans specific entries in META-INF/MANIFEST.MF)
+    * for Apache NetBeans module dependencies (dependency jars that have the Apache NetBeans specific entries in <<<META-INF/MANIFEST.MF>>>)
 
-        * It's a direct dependency (non-transitive) and is a NetBeans module itself. Preferred way of declaring
+        * It's a direct dependency (non-transitive) and is a Apache NetBeans module itself. Preferred way of declaring
 module dependencies. 
 
         * It's defined in existing (though optional) module.xml file in <<<dependencies>>> section.
@@ -141,9 +123,9 @@
 the build fails. That should prevent ClassNotFoundException's later at runtime, when the NetBeans module
 system constructs the classpath for the module based on our metadata generated.
 
-Using OSGi bundles in NetBeans platform based applications
+Using OSGi bundles in Apache NetBeans platform based applications
 
- Starting with version <<3.2>>, it's possible for the NetBeans modules to depend on OSGi bundles. A proper module dependency section will be generated.
+ Starting with version <<3.2>>, it's possible for the Apache NetBeans modules to depend on OSGi bundles. A proper module dependency section will be generated.
 To include the bundle in the application, add dependency on the bundle from nbm-application.
 There are a few prerequisites.
 
@@ -165,17 +147,17 @@
 
 Multi module setup
 
- If you have a set of NetBeans modules, or are building on top of NetBeans Platform,
+ If you have a set of Apache NetBeans modules, or are building on top of Apache NetBeans Platform,
 you will make use of the additional goals provided by the plugin.
 
  If you are building a Platform-based application, use a project
 with <<<nbm-application>>> packaging to perform the final application assembly.
 This packaging type (defined in nbm-maven-plugin) should have your module projects
-and all dependencies of the target NetBeans Platform included as dependencies.
+and all dependencies of the target Apache NetBeans Platform included as dependencies.
 
- For the NetBeans Platform/IDE modules, there are artifacts that aggregate modules in clusters.
+ For the Apache NetBeans Platform/IDE modules, there are artifacts that aggregate modules in clusters.
 These are put in the <<<org.netbeans.clusters>>> groupId (on <<<bits.netbeans.org>>> or in your own repository).
-The following snippet will include the basic NetBeans platform cluster and your own
+The following snippet will include the basic Apache NetBeans platform cluster and your own
 module in the application. You can use standard dependency exclusion lists to cut out modules from the Platform that
 you don't need.
 
@@ -227,7 +209,7 @@
 mvn nbm:cluster
 +-------------------------------------------------------------------------------+
 
- This goal aggregates output of multiple NetBeans module projects and creates one 
+ This goal aggregates output of multiple Apache NetBeans module projects and creates one 
 or more clusters in the current project. So usually one runs this goal on the parent POM project,
 which aggregates the content of all its modules. 
 The resulting cluster structure can later be used for running the application, creating an installer or similar.
@@ -237,15 +219,15 @@
 mvn nbm:branding
 +-------------------------------------------------------------------------------+
 
- Branding is to used when one builds an application based on NetBeans Platform (as opposed to creating set of modules for the IDE).
+ Branding is to used when one builds an application based on Apache NetBeans Platform (as opposed to creating set of modules for the IDE).
 Branding contains all the resources that are to be changed in the platform binaries (resource bundles, images, HTML files etc.) 
 to give the application its unique look.
 
  This goal can be attached to one of the nbm module projects that will be part of the
-NetBeans Platform-based application.
+Apache NetBeans Platform-based application.
 
- For more detailed tutorial, check the {{{http://netbeans.dzone.com/videos/screencast-maven-and-netbeans}Screencast: Maven and the NetBeans Platform}}
-video recorded by Fabrizio Giudici. It describes to Fabrizio's open source project {{{http://kenai.com/projects/forceten}ForceTen}} which can be used as reference setup for Maven NetBeans Platform based apps.
+~~ For more detailed tutorial, check the {{{http://netbeans.dzone.com/videos/screencast-maven-and-netbeans}Screencast: Maven and the NetBeans Platform}}
+~~ video recorded by Fabrizio Giudici. It describes to Fabrizio's open source project {{{http://kenai.com/projects/forceten}ForceTen}} which can be used as reference setup for Maven NetBeans Platform based apps.
 
  The branding is included as part of a regular nbm subproject and cannot be attached to a <<<pom>>> packaged root project.
 
@@ -254,13 +236,12 @@
 +-------------------------------------------------------------------------------+
  
  These two goals do almost the same, they allow you to execute your projects content within
-the IDE or NetBeans platform.
+the IDE or Apache NetBeans platform.
 
  <<<nbm:run-platform>>> only makes sense to execute on projects with <<<nbm-application>>> packaging.
 
  For more information on plugin configuration and customization, see {{{./plugin-info.html}goal documentation}}.
 
-
 Public packages declaration
 
  By default all your module's packages (and classes) and private to the given module. If you want to expose
@@ -288,21 +269,19 @@
  there is a package <<<org.foo.api>>> made public (but not <<<org.foo.api.impl>>> package) and
 any package starting with <<<org.apache.commons>>>, so both <<<org.apache.commons.io>>> and <<<org.apache.commons.exec>>> packages are exposed to the outside
 
-
-
 Archetypes anyone?
  
  There are two basic archetypes:
 
- The first once creates a single project preconfigured to be a NetBeans module. Use this
-one if you are developing a NetBeans IDE module, or a module for a NetBeans Platform-based application.
+ The first once creates a single project preconfigured to be a Apache NetBeans module. Use this
+one if you are developing a Apache NetBeans IDE module, or a module for a Apache NetBeans Platform-based application.
 
 +-------------------------------------------------------------------------------+
 mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=nbm-archetype -DarchetypeVersion=... \
   -DgroupId=org.kleint -DartifactId=milos -Dversion=1.0 archetype:generate
 +-------------------------------------------------------------------------------+
 
- The second one creates a parent POM project containing configuration and application branding for your NetBeans Platform-based application.
+ The second one creates a parent POM project containing configuration and application branding for your Apache NetBeans Platform-based application.
 
 +-------------------------------------------------------------------------------+
 mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=netbeans-platform-app-archetype \
@@ -311,11 +290,34 @@
 
 IDE support
 
- The NetBeans IDE has Maven support. Among other features, it
-contains additional support for working with NetBeans module projects. The support includes file templates,
+ The Apache NetBeans IDE has Apache Maven support. Among other features, it
+contains additional support for working with Apache NetBeans module projects. The support includes file templates,
 important nodes in projects view, running module(s) in the IDE or Platform.
 
-Sample real life application
+~~ Sample real life application
+~~ 
+~~  Check the {{{http://netbeans.dzone.com/videos/screencast-maven-and-netbeans}Screencast: Maven and the NetBeans Platform}}
+~~ video recorded by Fabrizio Giudici. It describes to Fabrizio's open source project {{{http://kenai.com/projects/forceten}ForceTen}} which can be used as reference setup for Maven NetBeans Platform based apps.
 
- Check the {{{http://netbeans.dzone.com/videos/screencast-maven-and-netbeans}Screencast: Maven and the NetBeans Platform}}
-video recorded by Fabrizio Giudici. It describes to Fabrizio's open source project {{{http://kenai.com/projects/forceten}ForceTen}} which can be used as reference setup for Maven NetBeans Platform based apps.
+
+Old NetBeans Version
+
+ To get access to a repository with NetBeans.org module artifacts and metadata, add {{{http://bits.netbeans.org/maven2/}http://bits.netbeans.org/maven2/}} repository to your project POM
+or the repository manager you are using. The repository hosts binaries from NetBeans 6.5 up to NetBeans 8.2.
+
++-----+
+ <!-- This section add the NetBeans repository for Old NetBeans Version -->
+    <repositories>
+        <repository>
+            <id>netbeans</id>
+            <name>repository hosting netbeans.org api artifacts</name>
+            <url>http://bits.netbeans.org/maven2/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
++-----+
\ No newline at end of file
