diff --git a/pom.xml b/pom.xml
index 0b6f6e1..4abda48 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,6 +118,7 @@
         <module>servicebinder</module>
         <module>wireadmin</module>
         <module>prefs</module>
+        <module>status-printer</module>
         <module>webconsole</module>
         <module>webconsole-plugins/event</module>
         <module>fileinstall</module>
diff --git a/webconsole/pom.xml b/webconsole/pom.xml
index 6fd7de4..d1ba5b3 100644
--- a/webconsole/pom.xml
+++ b/webconsole/pom.xml
@@ -226,7 +226,7 @@
                                        <Bundle-Version>
                                            ${project.version}-all
                                        </Bundle-Version>
-                                       <Export-Package>
+                                       <Export-Package>                                         
                                             org.apache.commons.fileupload,
                                             org.apache.commons.fileupload.disk,
                                             org.apache.commons.fileupload.servlet,
@@ -234,7 +234,8 @@
                                             org.apache.commons.io,
                                             org.apache.commons.io.filefilter,
                                             org.apache.commons.io.output,
-                                            org.json;version=${org.json.version.osgi}
+                                            org.json;version=${org.json.version.osgi},
+                                            org.apache.felix.status;version=1.0.0
                                        </Export-Package>
                                        <Embed-Dependency>
                                            <!-- Import/Export-Package parsing -->
@@ -244,6 +245,7 @@
                                            <!-- ServiceTracker -->
                                            org.osgi.compendium;
                                               inline=org/osgi/util/tracker/*,
+                                           org.apache.felix.status
                                        </Embed-Dependency>
                                        
                                        <_removeheaders>
@@ -421,5 +423,11 @@
             <optional>true</optional>
         </dependency>
         
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.status</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/OsgiManagerActivator.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/OsgiManagerActivator.java
index d21c98e..3f764b4 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/OsgiManagerActivator.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/OsgiManagerActivator.java
@@ -25,7 +25,7 @@
 
 
 /**
- * This is the main, starting class of the Bundle. It initializes and disposes 
+ * This is the main, starting class of the Bundle. It initializes and disposes
  * the Apache Web Console upon bundle lifecycle requests.
  */
 public class OsgiManagerActivator implements BundleActivator
@@ -33,21 +33,45 @@
 
     private OsgiManager osgiManager;
 
+    private BundleActivator statusActivator;
+
+    private static final String STATUS_ACTIVATOR = "org.apache.felix.status.impl.Activator";
 
     /**
      * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
      */
-    public void start( BundleContext bundleContext )
+    public void start( final BundleContext bundleContext ) throws Exception
     {
         osgiManager = new OsgiManager( bundleContext );
+        try
+        {
+            final Class activatorClass = bundleContext.getBundle().loadClass(STATUS_ACTIVATOR);
+            this.statusActivator = (BundleActivator) activatorClass.newInstance();
+
+        }
+        catch (Throwable t)
+        {
+            // we ignore this as the status activator is only available if the web console
+            // bundle contains the status bundle.
+        }
+        if ( this.statusActivator != null)
+        {
+            this.statusActivator.start(bundleContext);
+        }
     }
 
 
     /**
      * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
      */
-    public void stop( BundleContext arg0 )
+    public void stop( final BundleContext bundleContext ) throws Exception
     {
+        if ( this.statusActivator != null)
+        {
+            this.statusActivator.stop(bundleContext);
+            this.statusActivator = null;
+        }
+
         if ( osgiManager != null )
         {
             osgiManager.dispose();
