diff --git a/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java b/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java
index 3afd7be..45b2580 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java
@@ -25,7 +25,7 @@
 
 /**
  * Copied with modifications from felix configadmin.
- * 
+ *
  * The <code>TargetedPID</code> class represents a targeted PID as read
  * from a configuration object.
  * <p>
@@ -50,7 +50,7 @@
      * <li><code>0</code> -- this PID is not targeted at all</li>
      * <li><code>1</code> -- this PID is targeted by the symbolic name</li>
      * <li><code>2</code> -- this PID is targeted by the symbolic name and version</li>
-     * <li><code>3</code> -- this PID is targeted by the symoblic name, version, and location</li>
+     * <li><code>3</code> -- this PID is targeted by the symbolic name, version, and location</li>
      * </ul>
      */
     private final short bindingLevel;
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java b/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
index 4b084a6..625a080 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
@@ -121,15 +121,15 @@
                         if ( cao instanceof ConfigurationAdmin )
                         {
                             final ConfigurationAdmin ca = ( ConfigurationAdmin ) cao;
-                            for (String confPid: confPids )
+                            for (final String confPid : confPids )
                             {
                                 final Collection<Configuration> factory = findFactoryConfigurations( ca, confPid,
                                         bundleContext.getBundle() );
                                 if ( !factory.isEmpty() )
                                 {
-                                    boolean created = false;
                                     for ( Configuration config: factory )
                                     {
+                                        boolean created = false;
                                         Activator.log( LogService.LOG_DEBUG, null,
                                                 "Configuring holder {0} with factory configuration {1}", new Object[] {
                                                         holder, config }, null );
@@ -142,8 +142,11 @@
                                                     config.getProperties(),
                                                     changeCount );
                                         }
+                                        if ( !created ) 
+                                        {
+                                        	return false;
+                                        }
                                     }
-                                    return created;
                                 }
                                 else
                                 {
@@ -162,11 +165,19 @@
                                             long changeCount = changeCounter.getChangeCount( singleton, false, -1 );
                                             holder.configurationUpdated( new TargetedPID( singleton.getPid() ), null,
                                                     singleton.getProperties(), changeCount );
-                                            return true;
                                         }
+                                        else
+                                        {
+                                        	return false;
+                                        }
+                                    }
+                                    else 
+                                    {
+                                    	return false;
                                     }
                                 }
                             }
+                            return !confPids.isEmpty();
                         }
                         else
                         {
