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 9f994e8..390fe6a 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
@@ -42,28 +42,28 @@
     String SERVICE = ConfigurationPrinter.class.getName();
 
     /** The default mode - this printer is used in the web console and the zip.
-     * @since 2.2 */
+     * @since 3.0 */
     String MODE_ALWAYS = "always";
 
     /** The web mode - this printer is used in the web console.
-     * since 2.2 */
+     * since 3.0 */
     String MODE_WEB = "web";
 
     /** The zip mode - this printer is used in the zip.
-     * @since 2.2 */
+     * @since 3.0 */
     String MODE_ZIP = "zip";
 
     /** The txt mode - this printer is used in the txt.
-     * @since 2.2 */
+     * @since 3.0 */
     String MODE_TXT = "txt";
 
     /**
-     * The service property specifying the modes of the printer. If this
-     * property is missing or contains an unknown value, the default
+     * The optional service property specifying the modes of the printer.
+     * If this property is missing or contains an unknown value, the default
      * {@link #MODE_ALWAYS} is used.
      * The value of this property is either a single string or an
      * array of strings.
-     * @since 2.2
+     * @since 3.0
      */
     String PROPERTY_MODES = "modes";
 
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java b/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java
new file mode 100644
index 0000000..6faeed3
--- /dev/null
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.felix.webconsole;
+
+
+import java.io.PrintWriter;
+
+
+/**
+ * This is an optional extension of the {@link ConfigurationPrinter}.
+ * If a configuration printer implements this interface, the
+ * {@link #printConfiguration(PrintWriter, String)} method is used
+ * for printing the configuration instead of the
+ * {@link ConfigurationPrinter#printConfiguration(PrintWriter)}
+ * method.
+ *
+ * A service implementing this method must still register itself
+ * as a {@link ConfigurationPrinter} but not as a
+ * {@link ModeAwareConfigurationPrinter} service.
+ * @since 3.0
+ */
+public interface ModeAwareConfigurationPrinter
+    extends ConfigurationPrinter
+{
+
+    /**
+     * 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.
+     * @param printWriter The print writer to use.
+     * @param mode The rendering mode.
+     */
+    void printConfiguration( PrintWriter printWriter, String mode );
+}
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
index b2ea79c..65835f0 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java
@@ -27,8 +27,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.felix.webconsole.ConfigurationPrinter;
-import org.apache.felix.webconsole.WebConsoleConstants;
+import org.apache.felix.webconsole.*;
 import org.apache.felix.webconsole.internal.BaseWebConsolePlugin;
 import org.apache.felix.webconsole.internal.Util;
 import org.osgi.framework.ServiceReference;
@@ -178,7 +177,7 @@
             final PrinterDesc desc = (PrinterDesc) cpi.next();
             if ( desc.match(mode) )
             {
-                printConfigurationPrinter( pw, desc.printer );
+                printConfigurationPrinter( pw, desc.printer, mode );
             }
         }
     }
@@ -264,10 +263,19 @@
     //    }
 
 
-    private void printConfigurationPrinter( ConfigurationWriter pw, ConfigurationPrinter cp )
+    private void printConfigurationPrinter( final ConfigurationWriter pw,
+            final ConfigurationPrinter cp,
+            final String mode )
     {
         pw.title(  cp.getTitle() );
-        cp.printConfiguration( pw );
+        if ( cp instanceof ModeAwareConfigurationPrinter )
+        {
+            ((ModeAwareConfigurationPrinter)cp).printConfiguration( pw , mode);
+        }
+        else
+        {
+            cp.printConfiguration( pw );
+        }
         pw.end();
     }
 
