diff --git a/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java b/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java
index dad67a2..ad896d3 100644
--- a/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java
+++ b/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java
@@ -63,7 +63,7 @@
             return null;
         }
 
-        DefaultCustomToolchain customToolchain = new DefaultCustomToolchain( model, logger );
+        CustomToolchainImpl customToolchain = new CustomToolchainImpl( model, logger );
 
         // populate the provides section
         Properties provides = getProvidesProperties( model );
@@ -95,11 +95,11 @@
         // populate the configuration section
         Properties configuration = toProperties( (Xpp3Dom) model.getConfiguration() );
 
-        String toolHome = configuration.getProperty( DefaultCustomToolchain.KEY_TOOLHOME );
+        String toolHome = configuration.getProperty( CustomToolchainImpl.KEY_TOOLHOME );
         if ( toolHome == null )
         {
             throw new MisconfiguredToolchainException( "Custom toolchain without the "
-                + DefaultCustomToolchain.KEY_TOOLHOME + " configuration element." );
+                + CustomToolchainImpl.KEY_TOOLHOME + " configuration element." );
         }
 
         toolHome = FileUtils.normalize( toolHome );
diff --git a/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/DefaultCustomToolchain.java b/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainImpl.java
similarity index 95%
rename from src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/DefaultCustomToolchain.java
rename to src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainImpl.java
index 3287de9..990d9b6 100644
--- a/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/DefaultCustomToolchain.java
+++ b/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainImpl.java
@@ -31,7 +31,7 @@
 /**
  * @author Hervé Boutemy
  */
-public class DefaultCustomToolchain
+public class CustomToolchainImpl
     extends DefaultToolchain
     implements CustomToolchain
 {
@@ -39,7 +39,7 @@
 
     public static final String KEY_TOOLHOME = "toolHome";
 
-    public DefaultCustomToolchain( ToolchainModel model, Logger logger )
+    public CustomToolchainImpl( ToolchainModel model, Logger logger )
     {
         super( model, "custom", logger );
     }
diff --git a/src/site/apt/toolchains/custom.apt b/src/site/apt/toolchains/custom.apt
new file mode 100644
index 0000000..f640094
--- /dev/null
+++ b/src/site/apt/toolchains/custom.apt
@@ -0,0 +1,124 @@
+~~ 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.
+
+  ------
+  Custom Toolchains
+  ------
+  Hervé Boutemy
+  ------
+  2014-11-08
+  ------
+
+Custom Toolchains
+
+  You can create your own custom toolchains with plugins using them.
+
+  A full working sample is included in <<<maven-toolchains-plugin>>> ITs:
+
+  * see <<<src/it/custom-toolchain-plugin>>> for the custom toolchain and plugin,
+
+  * see <<<src/it/use-custom-toolchain>>> for a sample project using the toolchain through its plugin.
+
+  []
+
+  Following instructions are explanations of key points of the sample.
+
+* Creating Custom Toolchain
+
+  A toolchain consists in:
+
+  * an interface extending {{{/ref/current/maven-core/apidocs/org/apache/maven/toolchain/Toolchain.html}<<<org.apache.maven.toolchain.Toolchain>>>}},
+
+  * an implementation of this interface, extending
+  {{{/ref/current/maven-core/apidocs/org/apache/maven/toolchain/DefaultToolchain.html}<<<org.apache.maven.toolchain.DefaultToolchain>>>}}
+  and implementing previous interface,
+
+  * a {{{/ref/current/maven-core/apidocs/org/apache/maven/toolchain/ToolchainFactory.html}<<<org.apache.maven.toolchain.ToolchainFactory>>>}},
+  provided as Plexus component: Plexus {{{http://plexus.codehaus.org/plexus-containers/plexus-component-annotations/}<<<@Component>>>}}
+  annotation in the class is extracted by {{{http://plexus.codehaus.org/plexus-containers/plexus-component-metadata/}<<<plexus-component-metadata>>>}}
+  plugin.
+
+  []
+
+* Creating a Plugin Using a Toolchain
+
+  To get a configured toolchain, a plugin uses
+  {{{/ref/current/maven-core/apidocs/org/apache/maven/toolchain/ToolchainManager.html}<<<ToolchainManager>>>}} API
+  to get epxected toolchain, then tool in the toolchain:
+
++--------+
+    @Component
+    private ToolchainManager toolchainManager;
+
+    @Parameter( defaultValue = "${session}", required = true, readonly = true )
+    private MavenSession session;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        // get the custom toolchain
+        CustomToolchain toolchain = (CustomToolchain) toolchainManager.getToolchainFromBuildContext( "custom", session );
+
+        if ( toolchain == null )
+        {
+            throw new MojoExecutionException( "Could not find 'custom' toolchain: please check maven-toolchains-plugin configuration." );
+        }
+
+        getLog().info( "Found 'custom' toolchain in build context." );
+
+        // get a tool from the toolchain
+        String path = toolchain.findTool( "tool" );
+
+        getLog().info( "Found expected tool named 'tool' at following location: " + path );
+    }
++--------+
+
+  This code uses {{{/plugin-tools/maven-plugin-plugin/examples/using-annotations.html}Maven Plugin Tool Java 5 Annotations}}.
+
+* Using the Custom Toolchain and its Plugin
+
+  The custom toolchain implementation needs to be shared between the toolchain-aware plugin and <<<maven-toolchains-plugin>>>:
+  this is done using Maven extension:
+
+  * if the toolchain is packaged with the plugin, this is done by declaring the plugin as extension:
+
++--------+
+      <plugin>
+        <groupId>...</groupId>
+        <artifactId>...</artifactId>
+        <version>...</version>
+        <extensions>true</extensions><!-- to share the custom toolchain with maven-toolchains-plugin -->
+      </plugin>
++--------+
+
+  * if the toolchain is packaged separately, to be shared by multiple plugins, it has to be declared as a build extension:
+
++--------+
+<project>
+  <build>
+    <extensions>
+      <extension>
+        <groupId>...</groupId>
+        <artifactId>...</artifactId>
+        <version>...</version>
+      </extension>
+    </extensions>
+  </build>
+</project>
++--------+
+
+  []
diff --git a/src/site/apt/toolchains/index.apt b/src/site/apt/toolchains/index.apt
index aa82d58..721fe94 100644
--- a/src/site/apt/toolchains/index.apt
+++ b/src/site/apt/toolchains/index.apt
@@ -33,4 +33,4 @@
   []
 
   You can also create and use your own custom toolchains by following the
-  {{{http://maven.apache.org/}TBD}} instructions.
+  {{{./custom.html}Custom Toolchains}} instructions.
