diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/Action.java b/webconsole/src/main/java/org/apache/felix/webconsole/Action.java
index 8389af1..b0d9f68 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/Action.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/Action.java
@@ -24,6 +24,15 @@
 import javax.servlet.http.HttpServletResponse;
 
 
+/**
+ * The <code>Action</code> interface defines a service interface for actions
+ * to be plugged into the web console.
+ * <p>
+ * <strong>NOTE: This interface is just an intermediate solution for making the
+ * web console extensible. Future releases of the web console will remove this
+ * and the {@link Render} interfaces and use the <code>javax.servlet.Servlet</code>
+ * interface with predefined service registration properties instead.</strong>
+ */
 public interface Action
 {
 
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java b/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
index 8e9c22e..13505f8 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
@@ -22,15 +22,33 @@
 import java.io.PrintWriter;
 
 
+/**
+ * The <code>ConfigurationPrinter</code> is a service interface to be used by
+ * providers which want to hook into the display of the current configuration
+ * of the OSGi framework.
+ */
 public interface ConfigurationPrinter
 {
 
+    /**
+     * The service name under which services of this class must be registered
+     * to be picked for inclusion in the configuration report.
+     */
     static final String SERVICE = ConfigurationPrinter.class.getName();
 
 
+    /**
+     * Returns a human readable title string to be place in front of the configuration
+     * report generated by the {@link #printConfiguration(PrintWriter)} method.
+     */
     String getTitle();
 
 
+    /**
+     * Prints the configuration report to the given <code>printWriter</code>.
+     * Implementations are free to print whatever information they deem useful.
+     * The <code>printWriter</code> may be flushed but must not be closed.
+     */
     void printConfiguration( PrintWriter printWriter );
 
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/Render.java b/webconsole/src/main/java/org/apache/felix/webconsole/Render.java
index 33fa0ee..b2e86aa 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/Render.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/Render.java
@@ -25,7 +25,13 @@
 
 
 /**
- * The <code>Render</code> TODO
+ * The <code>Render</code> interface defines a service interface for
+ * information renderings to be plugged into the web console.
+ * <p>
+ * <strong>NOTE: This interface is just an intermediate solution for making the
+ * web console extensible. Future releases of the web console will remove this
+ * and the {@link Action} interfaces and use the <code>javax.servlet.Servlet</code>
+ * interface with predefined service registration properties instead.</strong>
  */
 public interface Render
 {
