diff --git a/configadmin/pom.xml b/configadmin/pom.xml
index 91a2f4c..8798aa8 100644
--- a/configadmin/pom.xml
+++ b/configadmin/pom.xml
@@ -62,12 +62,12 @@
                             ${artifactId}
                         </Bundle-SymbolicName>
                         <Export-Package>
-                            org.apache.felix.cm,
-                            org.apache.felix.cm.file,
+                            org.apache.felix.cm;
+                            org.apache.felix.cm.file;version=1.0,
                             org.osgi.service.cm;version=1.2
                         </Export-Package>
                         <Private-Package>
-                            org.apache.felix.cm.*
+                            org.apache.felix.cm.impl
                         </Private-Package>
                         <Bundle-Activator>
                             org.apache.felix.cm.impl.ConfigurationManager
diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
index 9b3b97c..d42b728 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
@@ -880,6 +880,11 @@
                 log( LogService.LOG_ERROR, sr + ": Unexpected problem updating configuration", t );
             }
         }
+        
+        public String toString()
+        {
+            return "ManagedService Update: pid=" + pid;
+        }
     }
 
     private class ManagedServiceFactoryUpdate implements Runnable
@@ -957,6 +962,7 @@
                     // Configuration has just been created but not yet updated
                     // we currently just ignore it and have the update mechanism
                     // provide the configuration to the ManagedServiceFactory
+                    log( LogService.LOG_DEBUG, "Ignoring new configuration pid=" + pid, null );
                     continue;
                 }
                 else if ( !factoryPid.equals( cfg.getFactoryPid() ) )
@@ -992,6 +998,7 @@
                     // only, if there is non-null configuration data
                     if ( dictionary != null )
                     {
+                        log( LogService.LOG_DEBUG, sr + ": Updating configuration pid=" + pid, null );
                         service.updated( pid, dictionary );
                     }
                 }
@@ -1015,6 +1022,12 @@
                 }
             }
         }
+        
+        
+        public String toString()
+        {
+            return "ManagedServiceFactory Update: factoryPid=" + factoryPid;
+        }
     }
 
     private class UpdateConfiguration implements Runnable
@@ -1139,6 +1152,11 @@
 
             fireConfigurationEvent( ConfigurationEvent.CM_UPDATED, config.getPid(), config.getFactoryPid() );
         }
+        
+        public String toString()
+        {
+            return "Update: pid=" + config.getPid();
+        }
     }
 
     private class DeleteConfiguration implements Runnable
@@ -1219,6 +1237,11 @@
 
             fireConfigurationEvent( ConfigurationEvent.CM_DELETED, pid, factoryPid );
         }
+        
+        public String toString()
+        {
+            return "Delete: pid=" + pid;
+        }
     }
 
     private class FireConfigurationEvent implements Runnable
@@ -1262,6 +1285,11 @@
                 }
             }
         }
+        
+        public String toString()
+        {
+            return "Fire ConfigurationEvent: pid=" + pid;
+        }
     }
 
     private static abstract class AbstractManagedServiceTracker extends ServiceTracker
diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/UpdateThread.java b/configadmin/src/main/java/org/apache/felix/cm/impl/UpdateThread.java
index 9a5f47d..df81f5d 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/UpdateThread.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/UpdateThread.java
@@ -86,6 +86,7 @@
             // otherwise execute the task, log any issues
             try
             {
+                configurationManager.log( LogService.LOG_DEBUG, "Running task " + task, null );
                 task.run();
             }
             catch ( Throwable t )
@@ -109,6 +110,8 @@
     {
         synchronized ( updateTasks )
         {
+            configurationManager.log( LogService.LOG_DEBUG, "Scheduling task " + update, null );
+
             // append to the task queue
             updateTasks.add( update );
             
