diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd b/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd
index 0743a46..cf8d441 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/bnd.bnd
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Bundle-Version: 4.0.4
+Bundle-Version: 4.1.0
 -buildpath:  \
 	osgi.core;version=4.2,\
 	de.twentyeleven.skysail.org.json-osgi;version=20080701.0,\
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java
index 4a09be2..6ef1f60 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ConfigurationDependency.java
@@ -89,7 +89,7 @@
     
     /**
      * Returns the pid from a class name. The full class name will be used as the configuration PID.
-     * You can use this method when you use an interface annoted with standard bndtols metatype annotations.
+     * You can use this method when you use an interface annotated with standard bndtols metatype annotations.
      * (see http://www.aqute.biz/Bnd/MetaType).
      * @return the pid class
      */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java
index 53e2d93..940c34c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/RepeatableProperty.java
@@ -25,7 +25,7 @@
 
 /**
  * Annotation used to describe repeated Property annotation. You actually don't have to use directly this annotation,
- * which is used used to allow to repeat several times the {@link Property} annotation on a given component class.
+ * which is used to allow repeating several times the {@link Property} annotation on a given component class.
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo
index a4f1546..b1793a2 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/packageinfo
@@ -1 +1 @@
-version 1.0
\ No newline at end of file
+version 1.1.0
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
index 2cbc288..9a80f15 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
@@ -21,6 +21,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Dictionary;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -622,9 +623,58 @@
         EntryWriter writer = new EntryWriter(EntryType.ConfigurationDependency);
         m_writers.add(writer);
 
-        // pid attribute (can be specified using the pid attribute, or using the classPid attribute)
+        // The pid is either:
+        //
+        // - the fqdn of the configuration proxy type, if the callback accepts an interface (not a Dictionary).
+        // - or the fqdn of the class specified by the pidFromClass attribute 
+        // - or the value of the pid attribute
+        // - or by default the fdqn of the class where the annotation is found
+
         String pidFromClass = parseClassAttrValue(annotation.get(EntryParam.pidClass.toString()));
-        String pid = pidFromClass != null ? pidFromClass : get(annotation, EntryParam.pid.toString(), m_className);
+        String pid = pidFromClass != null ? pidFromClass : get(annotation, EntryParam.pid.toString(), null);
+
+        // Check if annotation is applied on "updated(ConfigProxyType)"
+        String confProxyType =   Patterns.parseClass(m_descriptor, Patterns.BIND_CLASS5, 1, false);
+        if (confProxyType != null)
+        {
+            if (! Dictionary.class.getName().equals(confProxyType)) 
+            {
+                // It's a conf proxy type.
+                writer.put(EntryParam.confProxyType, confProxyType);
+            }
+            else
+            {
+                confProxyType = null;
+            }
+            
+        } 
+        else
+        {
+            // Check if annotation is applied on "updated(Component, ConfigProxyType)"
+            confProxyType = Patterns.parseClass(m_descriptor, Patterns.BIND_CLASS2, 2, false); 
+            m_logger.warn("XX:%s/%s", m_descriptor, confProxyType);
+            if (! Dictionary.class.getName().equals(confProxyType)) 
+            {
+                // It's a conf proxy type.
+                writer.put(EntryParam.confProxyType, confProxyType);
+            }
+            else
+            {
+                confProxyType = null;
+            }
+        }
+        
+        if (pid == null) 
+        {
+            if (confProxyType != null)
+            {
+                pid = confProxyType;
+            }
+            else 
+            {
+                pid = m_className;
+            }
+        }
 
         writer.put(EntryParam.pid, pid);
         
diff --git a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java
index 41a0b5d..bff3b7a 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/plugin/bnd/EntryParam.java
@@ -44,6 +44,7 @@
     autoConfig, 
     pid,
     pidClass,
+    confProxyType, // inject a proxy configuration type 
     factoryPid,
     factoryPidClass,
     propagate, 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
index e25d441..7171103 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
@@ -71,7 +71,7 @@
                 break;
 
             case ConfigurationDependency:
-                dp = createConfigurationDependency(dm);
+                dp = createConfigurationDependency(b, dm);
                 break;
 
             case BundleDependency:
@@ -137,17 +137,17 @@
         return sd;
     }
 
-    private Dependency createConfigurationDependency(DependencyManager dm)
+    private Dependency createConfigurationDependency(Bundle b, DependencyManager dm) throws Exception
     {
+        String confProxyType = m_metaData.getString(Params.confProxyType, null);
         String pid = m_metaData.getString(Params.pid);
         boolean propagate = "true".equals(m_metaData.getString(Params.propagate, "false"));
         String callback = m_metaData.getString(Params.updated, "updated");
-        Dependency dp = createConfigurationDependency(dm, pid, callback, propagate);
-        return dp;
+        return createConfigurationDependency(dm, b, pid, callback, confProxyType, propagate);
     }
 
-    private Dependency createConfigurationDependency(DependencyManager dm, String pid, String callback,
-    	boolean propagate)
+    private Dependency createConfigurationDependency(DependencyManager dm, Bundle b, String pid, String callback, String confProxyType, boolean propagate) 
+        throws ClassNotFoundException
     {
         if (pid == null)
         {
@@ -156,7 +156,15 @@
         }
         ConfigurationDependency cd = dm.createConfigurationDependency();
         cd.setPid(pid);
-        cd.setCallback(callback);
+        if (confProxyType != null) 
+        {
+            Class<?> confProxyTypeClass = b.loadClass(confProxyType); 
+            cd.setCallback(callback, confProxyTypeClass);            
+        }
+        else
+        {
+            cd.setCallback(callback);            
+        }
         cd.setPropagate(propagate);
         return cd;
     }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java
index 37f251f..ee2dd86 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java
@@ -64,5 +64,6 @@
     dependencyManagerField, 
     componentField,
     registered, 
-    unregistered
+    unregistered,
+    confProxyType
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd
index 8066df9..9bedc6f 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd
@@ -14,53 +14,22 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.0.${tstamp}
 -buildpath:  \
-	org.apache.felix.dependencymanager;version=latest,\
 	osgi.core;version=4.2,\
 	osgi.cmpn;version=4.2,\
+	biz.aQute.bnd.annotation,\
+	org.apache.felix.dependencymanager;version=latest,\
 	org.apache.felix.gogo.runtime;version=latest,\
 	org.apache.felix.dependencymanager.runtime;version=latest,\
-	org.apache.felix.dependencymanager.annotation;version=latest,\
-	biz.aQute.bnd.annotation
--runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
--runee: JavaSE-1.7
--runbundles:  \
-	org.apache.felix.dependencymanager;version=latest,\
-	org.apache.felix.metatype;version=1.0.4,\
-	org.apache.felix.log;version=1.0.1,\
-	org.apache.felix.gogo.command;version=0.14.0,\
-	org.apache.felix.gogo.runtime;version=0.12.0,\
-	org.apache.felix.gogo.shell;version=0.10.0,\
-	org.apache.felix.dependencymanager.shell;version=latest,\
-	org.apache.felix.dependencymanager.runtime;version=latest,\
-	org.apache.felix.configadmin;version=1.8.6,\
-	org.apache.felix.eventadmin;version=1.4.3,\
-	biz.aQute.bndlib;version=2.3.0,\
-	org.apache.felix.webconsole;version=4.2.2,\
-	org.apache.felix.http.api;version=2.3.0,\
-	org.apache.felix.http.servlet-api;version=1.0.0,\
-	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
-	org.apache.felix.dependencymanager.samples.hello.api;version=latest,\
-	org.apache.felix.dependencymanager.samples.tpool;version=latest,\
-	org.apache.felix.dependencymanager.samples.conf;version=latest,\
-	org.apache.felix.dependencymanager.samples.device.api;version=latest
--runproperties:  \
-	org.apache.felix.dependencymanager.parallel='!org.apache.felix.dependencymanager.samples.tpool, *',\
-	org.apache.felix.dependencymanager.runtime.log=warn,\
-	org.apache.felix.dependencymanager.loglevel=2,\
-	org.apache.felix.log.maxSize=100000,\
-	org.apache.felix.log.storeDebug=true
--plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
-		 path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
-
+	org.apache.felix.dependencymanager.annotation;version=latest
 -sub:  \
 	*.bnd
 -metatype: *
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-DocURL: http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager.html
+Bundle-Vendor: The Apache Software Foundation
 Include-Resource: META-INF/=resources/LICENSE,\
 	META-INF/=resources/NOTICE,\
 	META-INF/=resources/DEPENDENCIES,\
 	META-INF/=${workspace}/release/resources/changelog.txt
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-DocURL: http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager.html
-Bundle-Vendor: The Apache Software Foundation
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/composite.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/composite.bndrun
new file mode 100644
index 0000000..532fba5
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/composite.bndrun
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.composite;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/compositefactory.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/compositefactory.bndrun
new file mode 100644
index 0000000..7b6cb99
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/compositefactory.bndrun
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.compositefactory;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/customdep.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/customdep.bndrun
new file mode 100644
index 0000000..fa43297
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/customdep.bndrun
@@ -0,0 +1,42 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.customdep;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd
index 44a5201..deb4ed8 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.device.annot
 Bundle-Description: Dependency Manager device example with annotations
-Bundle-Name: Dependency Manager Device Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Device Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bndrun
new file mode 100644
index 0000000..fdcf6ad
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/device.annot.bndrun
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.device.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/device.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/device.api.bndrun
new file mode 100644
index 0000000..dc4bf8e
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/device.api.bndrun
@@ -0,0 +1,42 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.device.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd
index 815c859..83406ae 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.dictionary.annot
 Bundle-Description: Dependency Manager dictionary example with annotations
-Bundle-Name: Dependency Manager Dictionary Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Dictionary Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bndrun
new file mode 100644
index 0000000..31aca31
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.annot.bndrun
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.dictionary.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.api.bndrun
new file mode 100644
index 0000000..0a65fd3
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dictionary.api.bndrun
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.dictionary.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd
index 73f8c74..7492d65 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.dynamicdep.annot
 Bundle-Description: Dependency Manager dynamic dependency example with annotations
-Bundle-Name: Dependency Manager Dynamic Dependency Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Dynamic Dependency Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bndrun
new file mode 100644
index 0000000..38c84a7
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.annot.bndrun
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+        org.apache.felix.dependencymanager.samples.dynamicdep.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.api.bndrun
new file mode 100644
index 0000000..d5579bb
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/dynamicdep.api.bndrun
@@ -0,0 +1,48 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.http.api;version=2.3.0,\
+	org.apache.felix.http.servlet-api;version=1.0.0,\
+	org.apache.felix.http.jetty;version="[2.3.0,2.3.0]",\
+	org.apache.felix.webconsole;version=4.2.2,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.dynamicdep.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=warn,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd
index 9cf8284..6220fd6 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bnd
@@ -17,4 +17,6 @@
 Private-Package:  \
 	org.apache.felix.dependencymanager.samples.hello.annot
 Bundle-Description: Dependency Manager hello example with annotations
-Bundle-Name: Dependency Manager Hello Example With Annotations
\ No newline at end of file
+Bundle-Name: Dependency Manager Hello Example With Annotations
+-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
+  path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bndrun
new file mode 100644
index 0000000..e6502cf
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.annot.bndrun
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.hello.annot;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.runtime.log=false,\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/hello.api.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.api.bndrun
new file mode 100644
index 0000000..6c1ba78
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/hello.api.bndrun
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.conf;version=latest,\
+    org.apache.felix.dependencymanager.samples.hello.api;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java
index a693e00..6840981 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderImpl.java
@@ -45,7 +45,7 @@
     }
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2
+        m_log.log(LogService.LOG_WARNING, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2
             + ", conf=" + m_conf);
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java
index c6d76f3..11b2db4 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant1.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant1.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant1.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant1";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java
index efa5b4e..ddc4728 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/ProviderParticipant2.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant2.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant2.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant2";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README
index 18eb3b4..9fa68f7 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/composite/README
@@ -17,11 +17,17 @@
 
 This sample is an example usage of DM composite components. A composite component is implemented
 using a composition of multiple object instances, which are used to implement a given complex
-service. Here, we define a "Provider" service, which is implemented by three object instances:
-ProviderImpl, ProviderParticipant1, ProviderParticipant2.
+service. In this example, we define a "Provider" service, which is implemented by three object instances:
+ProviderImpl (which is the main implementation class that provides the service), ProviderParticipant1, 
+and ProviderParticipant2.
 
 Dependencies are injected in all objects being part of the composition.
 
-To see logs, type this command under the gogo shell:
+To test, run click on the bndtools "composite.bndrun" descriptor, and run it, then type "log warn" in gogo shell: 
 
-g! log info|grep composite
+g! log warn
+
+2016.02.08 23:00:34 WARNING - Bundle: org.apache.felix.dependencymanager.samples.composite - ProviderParticipant2.start()
+2016.02.08 23:00:34 WARNING - Bundle: org.apache.felix.dependencymanager.samples.composite - ProviderParticipant1.start()
+2016.02.08 23:00:34 WARNING - Bundle: org.apache.felix.dependencymanager.samples.composite - ProviderImpl.start(): participants=ProviderParticipant1,ProviderParticipant2, conf={key=value, service.pid=org.apache.felix.dependencymanager.samples.composite.ProviderImpl}
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java
index e88f653..a3673e6 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderImpl.java
@@ -41,6 +41,6 @@
     }
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2);
+        m_log.log(LogService.LOG_WARNING, "ProviderImpl.start(): participants=" + m_participant1 + "," + m_participant2);
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java
index 8397b13..4dfd3e4 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant1.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant1.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant1.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant1";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java
index 61a9d45..533e5fb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/ProviderParticipant2.java
@@ -27,6 +27,11 @@
     private volatile LogService m_log; // Injected
 
     void start() {
-        m_log.log(LogService.LOG_INFO, "ProviderParticipant2.start()");
+        m_log.log(LogService.LOG_WARNING, "ProviderParticipant2.start()");
+    }
+    
+    @Override
+    public String toString() {
+        return "ProviderParticipant2";
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README
index d1d6c27..f23a1b0 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/compositefactory/README
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-This Activator is an example usage of DM composite components. A composite component is implemented
+This Activator is an example usage of DM composite. A composite component is implemented
 using a composition of multiple object instances, which are used to implement a given service. 
 
 The sample also uses a Factory approach in order to instantiate the composition of objects: A
@@ -24,9 +24,10 @@
 
 Dependencies are injected in all objects in the composition.
 
-To see logs, type this command under the gogo shell:
+To test, run click on "compositefactory.bndrun" descriptor, and run it, then type "log warn" in gogo shell: 
 
-g! log info|grep compositefactory
+g! log warn
 
-
-
+2016.02.08 22:26:05 WARNING - Bundle: org.apache.felix.dependencymanager.samples.compositefactory - ProviderParticipant2.start()
+2016.02.08 22:26:05 WARNING - Bundle: org.apache.felix.dependencymanager.samples.compositefactory - ProviderParticipant1.start()
+2016.02.08 22:26:05 WARNING - Bundle: org.apache.felix.dependencymanager.samples.compositefactory - ProviderImpl.start(): participants=ProviderParticipant1,ProviderParticipant2
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
index 151fba4..afc1809 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
@@ -38,8 +38,8 @@
     
     public void start() {
         try {
-            System.out.println("Configuring sample components ... please consult log service messages for each sample you want to play with.");
-            System.out.println("For example: \"log info|grep org.apache.felix.dependencymanager.samples.device.api\"");
+            System.out.println("Configuring sample components ... please consult log messages to see example output, like this:");
+            System.out.println("\"log warn\"");
             // Provide configuration to the hello.ServiceConsumer component
             m_serviceConsumerConf = m_ca.getConfiguration("org.apache.felix.dependencymanager.samples.hello.api.ServiceConsumer", null);
             Hashtable<String, String> props = new Hashtable<>();
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
index bd6c7b7..443bc7c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
@@ -24,18 +24,18 @@
     volatile LogService logService;
     
     void start() {
-        logService.log(LogService.LOG_INFO, "PathTracker.start");
+        logService.log(LogService.LOG_WARNING, "PathTracker.start");
     }
     
     void stop() {
-        logService.log(LogService.LOG_INFO, "PathTracker.stop");
+        logService.log(LogService.LOG_WARNING, "PathTracker.stop");
     }
 
     void add(String path) {
-        logService.log(LogService.LOG_INFO, "PathTracker.add: " + path);
+        logService.log(LogService.LOG_WARNING, "PathTracker.add: " + path);
     }
     
     void remove(String path) {
-        logService.log(LogService.LOG_INFO, "PathTracker.remove: " + path);
+        logService.log(LogService.LOG_WARNING, "PathTracker.remove: " + path);
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README
index 7be7d6e..a67ad3c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/README
@@ -20,15 +20,15 @@
 
 The PathDependendency is a low level DM example, but shows how to create any custom dependencies.
 
-To test this sample, start the samples under bndtools, then type:
+To test this sample, start the "customdep.bndrun" descriptor, then create a file in /tmp:
 
-   g! log info|grep customdep
+   $ echo "test" > /tmp/foo
 
-Then create a "test" file under /tmp:
+Then display logs (your Tracker component has normally been injected with the added file and has been started):
 
-   $ echo "test" > /tmp/test
-
-Then redisplay logs (your Tracker component has normally been injected with the added file and has been started):
-
-   g! log info|grep customdep
+   g! log warn
+   
+2016.02.08 22:17:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.customdep - PathTracker.start
+2016.02.08 22:17:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.customdep - PathTracker.add: foo
+   
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java
index 2c3d50f..76264f2 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessConsumer.java
@@ -35,7 +35,7 @@
     // Injected after all required dependencies have been injected (including our logger)
     @ServiceDependency(required=false)
     void add(Map<String, Object> props, DeviceAccess deviceAccess) {
-        log.log(LogService.LOG_INFO, "Handling device access: id=" + props.get("device.id") 
+        log.log(LogService.LOG_WARNING, "Handling device access: id=" + props.get("device.id") 
             + "\n\t device=" + deviceAccess.getDevice() 
             + "\n\t device parameter=" + deviceAccess.getDeviceParameter()
             + "\n\t device access properties=" + props);
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java
index 669f306..a33252b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceAccessImpl.java
@@ -43,7 +43,7 @@
 
     @Init
     Map<String, String> init() {
-        log.log(LogService.LOG_INFO, "DeviceAccessImpl.init: device id=" + device.getDeviceId());
+        log.log(LogService.LOG_WARNING, "DeviceAccessImpl.init: device id=" + device.getDeviceId());
         // Dynamically configure our "deviceparam" dependency, using the already injected device service.
         Map<String, String> filters = new HashMap<>();
         filters.put("deviceparam.filter", "(device.id=" + device.getDeviceId() + ")");
@@ -53,7 +53,7 @@
 
     @Start
     Map<?, ?> start() {
-        log.log(LogService.LOG_INFO, "DeviceAccessImpl.start");
+        log.log(LogService.LOG_WARNING, "DeviceAccessImpl.start");
         // Dynamically add a service property, using the device.id
         Map<String, Object> props = new Hashtable<>();
         props.put("device.access.id", device.getDeviceId());
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java
index 834043f..f523e56 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceImpl.java
@@ -37,4 +37,10 @@
     public int getDeviceId() {
         return id;
     }
+    
+    
+    @Override
+    public String toString() {
+        return "Device #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java
index 07f4b4b..c932f80 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/DeviceParameterImpl.java
@@ -37,4 +37,9 @@
     public int getDeviceId() {
         return id;
     }
+    
+    @Override
+    public String toString() {
+        return "DeviceParameter #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README
index 63b8436..ec3612d 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/annot/README
@@ -25,6 +25,20 @@
 same device.id . The adapter also dynamically propagate the service properties of the adapted Device
 service.
 
-So see logs, just type this command under gogo shell:
+Start the test by clicking on the "device.annot.bndrun" descriptor, then run it, and type under gogo shell:
 
-g! log info|grep device.annot
+g! log warn
+
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - Handling device access: id=1
+	 device=Device #1
+	 device parameter=DeviceParameter #1
+	 device access properties={service.bundleid=12, service.id=31, service.scope=singleton, objectClass=[Ljava.lang.String;@6e38921c, device.id=1, device.access.id=1}
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.start
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.init: device id=1
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - Handling device access: id=0
+	 device=Device #0
+	 device parameter=DeviceParameter #0
+	 device access properties={service.bundleid=12, service.id=28, service.scope=singleton, device.id=0, objectClass=[Ljava.lang.String;@6e38921c, device.access.id=0}
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.start
+2016.02.08 22:05:45 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.annot - DeviceAccessImpl.init: device id=0
+
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java
index ce3d400..4c74bf5 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceAccessConsumer.java
@@ -29,7 +29,7 @@
     volatile LogService log;
 
     void add(Map<String, Object> props, DeviceAccess deviceAccess) {
-        log.log(LogService.LOG_INFO, "DeviceAccessConsumer: Handling device access: id=" + props.get("device.id") 
+        log.log(LogService.LOG_WARNING, "DeviceAccessConsumer: Handling device access: id=" + props.get("device.id") 
             + "\n\t device=" + deviceAccess.getDevice() 
             + "\n\t device parameter=" + deviceAccess.getDeviceParameter()
             + "\n\t device access properties=" + props);
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java
index 969fba3..9f1cecb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceImpl.java
@@ -32,4 +32,9 @@
     public int getDeviceId() {
         return id;
     }
+    
+    @Override
+    public String toString() {
+        return "Device #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java
index f6da3af..b7dbbc8 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/DeviceParameterImpl.java
@@ -32,4 +32,9 @@
     public int getDeviceId() {
         return id;
     }
+    
+    @Override
+    public String toString() {
+        return "DeviceParameter #" + id;
+    }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README
index d013c28..afd53ad 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/api/README
@@ -24,7 +24,17 @@
 same device.id . The adapter also dynamically propagate the service properties of the adapted Device
 service.
 
-So see logs, just type this command under gogo shell:
+Start the test by clicking on the "device.api.bndrun" descriptor, then run it, and type under gogo shell:
 
-g! log info|grep device.api
+g! log warn
 
+You will then see:
+
+2016.02.08 23:04:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.api - DeviceAccessConsumer: Handling device access: id=2
+	 device=Device #2
+	 device parameter=DeviceParameter #2
+	 device access properties={service.bundleid=12, service.id=28, service.scope=singleton, objectClass=[Ljava.lang.String;@679b62af, device.access.id=2, device.id=2}
+2016.02.08 23:04:46 WARNING - Bundle: org.apache.felix.dependencymanager.samples.device.api - DeviceAccessConsumer: Handling device access: id=1
+	 device=Device #1
+	 device parameter=DeviceParameter #1
+	 device access properties={service.bundleid=12, service.id=29, service.scope=singleton, objectClass=[Ljava.lang.String;@679b62af, device.id=1, device.access.id=1}
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java
index 77c3f49..79f574a 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspect.java
@@ -52,12 +52,9 @@
      * Defines a configuration dependency for retrieving our english custom words (by default,
      * our PID is our full class name).
      */
-    @ConfigurationDependency(pidClass = DictionaryAspectConfiguration.class, propagate = false)
-    protected void updated(Dictionary<String, ?> config) {
-        if (config != null) {
-            // We use the bnd "Configurable" helper in order to get an implementation for our DictionaryConfiguration interface.
-            DictionaryConfiguration cnf = Configurable.createConfigurable(
-                DictionaryConfiguration.class, config);
+    @ConfigurationDependency(propagate = false)
+    protected void updated(DictionaryAspectConfiguration cnf) {
+        if (cnf != null) {
             m_words.clear();
             for (String word : cnf.words()) {
                 m_words.add(word);
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java
index 5bfc6c0..31551e9 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Aspect Dictionary (annotation)",
+@OCD(name="Spell Checker Aspect Dictionary",
      description = "Declare here the list of english words to be added into the default english dictionary")
 public interface DictionaryAspectConfiguration {
     @AD(description = "Dictionary aspect words")
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java
index b853826..4f282d1 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Dictionary (annotation)", 
+@OCD(name="Spell Checker Dictionary", 
      factory = true, 
      description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language")
 public interface DictionaryConfiguration {
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README
index 4f55f97..05fc3f0 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/README
@@ -23,21 +23,21 @@
 
 A DictionaryService is defined using a FactoryConfigurationAdapterService , allowing to instantiate
 many "DictionaryService" instances when some configurations are added to the
-"Spell Checker Dictionary (annotation)" factory pid from web console. 
+"Spell Checker Dictionary" factory pid from web console. 
 The factory pid configuration metatypes are defined using the bnd "metatype" annotations
 (see DictionaryConfiguration.java).
 
 The DictionaryService is decorated with a DictionaryAspect, which you can instantiate by adding a
-configuration to the "Spell Checker Aspect Dictionary (annotation)" factory pid from web console. The
-aspect configuration metatype is also declared using the bnd metatype annotations (see
-DictionaryAspectConfiguration.java). 
+configuration to the "Spell Checker Aspect Dictionary" factory pid from web console. The
+aspect configuration metatype is also declared using the bnd metatype annotations (see DictionaryAspectConfiguration.java). 
 
-Before running this sample, go to webconsole (http://localhost:8080/system/console/configMgr), and add some words in the 
-"Spell Checker Dictionary (annotation)" section, and in the "Spell Checker Aspect Dictionary (annotation)" configurations.
+Start the test: click on "dictionary.annot.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and add some words in the 
+"Spell Checker Dictionary" section, and in the "Spell Checker Aspect Dictionary" configurations.
 
 Then go to gogo shell, and type dm help. You will normally see the dictionary.annotation:spellcheck command.
-Type 
+Then type:
  
-   dictionary.annotation:spellcheck <some words that you have configured in webconsole>
+   spellcheck <some words that you have configured in webconsole>
 
 and the command will check for proper word existence.
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java
index c7a2a9b..d23744b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Aspect Dictionary (api)",
+@OCD(name="Spell Checker Aspect Dictionary",
      description = "Declare here the list of english words to be added into the default english dictionary")
 public interface DictionaryAspectConfiguration {
     @AD(description = "Dictionary aspect words")
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java
index a022c80..c164997 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java
@@ -29,7 +29,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name="Spell Checker Dictionary (api)",
+@OCD(name="Spell Checker Dictionary",
      factory = true, 
      description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language")
 public interface DictionaryConfiguration {
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README
index c792587..800599f 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/README
@@ -23,22 +23,23 @@
 
 A DictionaryService is defined using a FactoryConfigurationAdapterService , allowing to instantiate
 many "DictionaryService" instances when some configurations are added to the
-"Spell Checker Configuration (api)" factory pid from web
+"Spell Checker Configuration" factory pid from web
 console. The factory pid configuration metatypes are defined using the bnd "metatype" annotations
 (see DictionaryConfiguration.java).
 
 The DictionaryService is decorated with a DictionaryAspect, which you can instantiate by adding a
-configuration to the "Spell Checker Aspect Dictionary (api)" pid from web console. The
+configuration to the "Spell Checker Aspect Dictionary" pid from web console. The
 aspect configuration metatype is also declared using the bnd metatype annotations (see
 DictionaryAspectConfiguration.java). 
 
-Before running this sample, go to webconsole (http://localhost:8080/system/console/configMgr), and add some 
-words in the "Spell Checker Dictionary (api)" and in the "Spell Checker Aspect Dictionary (api)" configurations.
+Start the test: click on "dictionary.api.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and add some words in the 
+"Spell Checker Dictionary" section, and in the "Spell Checker Aspect Dictionary" configurations.
 
-Then go to gogo shell, and type dm help. You will normally see the dictionary:spellcheck command.
+Then go to gogo shell, and type dm help. You will normally see the dictionary.annotation:spellcheck command.
 Then type:
+ 
+   spellcheck <some words that you have configured in webconsole>
 
-  dictionary:spellcheck <some words that you have configured in webconsole> 
-
-and the command will check for proper word existence in the configuration.
+and the command will check for proper word existence.
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java
index d9a201b..9cd9dfb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependency.java
@@ -60,11 +60,9 @@
 	/**
 	 * This is the first callback: we are injected with our configuration.
 	 */
-	@ConfigurationDependency(pidClass=DynamicDependencyConfiguration.class)
-	public void updated(Dictionary<String, Object> properties) throws ConfigurationException {
-        // We use the bnd "Configurable" helper in order to get an implementation for our DictionaryConfiguration interface.
-	    if (properties != null) {
-	        DynamicDependencyConfiguration cnf = Configurable.createConfigurable(DynamicDependencyConfiguration.class, properties);
+	@ConfigurationDependency
+	public void updated(DynamicDependencyConfiguration cnf) throws ConfigurationException {
+	    if (cnf != null) {
 	        storageType = cnf.storageType();
 	        storageRequired = cnf.storageRequired();
 	    }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java
index 7c07742..8b23fa7 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java
@@ -27,7 +27,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name = "Dynamic Dependency Configuration (annotation)",
+@OCD(name = "Dynamic Dependency Configuration",
      description = "Declare here the configuration for the DynamicDependency component.")
 public interface DynamicDependencyConfiguration {
     
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README
index ec48466..b9b66a8 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/README
@@ -16,21 +16,37 @@
  */
 
 This sample shows how to define a dynamic dependency using annotations.
+Using annotation, you can still dynamically configure from your @Init method
+some dependencies which has a "name" attribute. Such dependencies will then 
+be injected after your @Init method, but before your @Start method (if the dependencies
+are required), or after your @Start method (if the dependencies are optional).
 
 When you declare a Component:
 
 - the configuration (if any) is first injected (updated callback).
 - then all required dependencies are injected, except "named" dependencies whose required flag and filter can be configured
 dynamically from the init method.
-- then the init method (annotated with @Init) is invoked; And from there you are then able return a Map that will be used
+- then the init method (annotated with @Init) is invoked; And from there you are then able to return a Map that will be used
 to configure the required flag and the filter of all named dependencies.
 - then the start callback (annotated with @Start) is invoked when all required dependencies are injected, including named 
 dependencies that have been configured from the init method.
 
 In this sample, the "DynamicDependency" Components configures in its "init" method the dependency having a "storage" name. 
 the dependency "required" flag and filter string are loaded from a Configuration PID 
-(see the "Dynamic Dependency Configuration (annotation)" PID, from webconsole), which is defined using 
+(see the "Dynamic Dependency Configuration" PID, from webconsole), which is defined using 
 Bnd MetaType Annotations.
-So, you have configure the "Dynamic Dependency Configuration (annotation)" PID from web console before playing with this sample; then
-just type "log info|grep dynamicdep.annot" under the gogo shell.
+
+
+So, first, click on the "dynamicdep.annot.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and configure the "Dynamic Dependency Configuration" PID. 
+then just type "log warn" under the gogo shell:
+
+log warn
+
+Then you normally see something like:
+
+2016.02.08 21:49:26 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.annot - MapDBStorage.store(gabu,zo)
+2016.02.08 21:49:26 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.annot - start
+2016.02.08 21:49:26 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.annot - init: storage type=mapdb, storageRequired=true
+
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java
index 03fa3d9..43568d5 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java
@@ -27,7 +27,7 @@
  * 
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-@OCD(name = "Dynamic Dependency Configuration (api)", 
+@OCD(name = "Dynamic Dependency Configuration", 
      description = "Declare here the configuration for the DynamicDependency component.")
 public interface DynamicDependencyConfiguration {
     @AD(description = "Enter the storage type to use", 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README
index 4de67ed..55b4e26 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/README
@@ -17,16 +17,27 @@
 
 This sample shows how to define a dynamic dependency from a Component's init method.
 
-When you declare a Component:
+Let's recap the lifecycle of a DM component:
 
 - the configuration (if any) is first injected (updated callback).
+- then optional dependencies on class fields are injected.
 - then all required dependencies are injected.
 - then the init(Component c) method is invoked; And from there you are then able to add dynamic dependencies using any previously
 injected services (either configuration injected in update method, or other injected services declared from the Activator).
 - then the start callback is invoked when all required dependencies declared from the init method are injected.
 
-In this sample, the "DynamicDependency" Components defines in its "init" method a dynamic dependency on a Storage service. 
+In this sample, the "DynamicDependency" Component defines in its "init" method a dynamic dependency on a Storage service. 
 But it first loads the "storage type" and "storage required" dependency informations from a Configuration PID 
-(see the "Dynamic Dependency Configuration (api)" PID from webconsole), which is defined using Bnd MetaType Annotations.
-So, you have configure the "Dynamic Dependency Configuration (api)" PID from web console before playing with this sample; then
-just type "log info|grep dynamicdep.api" under the gogo shell.
+(see the "Dynamic Dependency Configuration" PID from webconsole), which is defined using Bnd MetaType Annotations.
+
+So, first, click on the "dynamicdep.api.bndrun" descriptor, and run it.
+Then go to webconsole (http://localhost:8080/system/console/configMgr), and configure the "Dynamic Dependency Configuration" PID. 
+then just type "log warn" under the gogo shell:
+
+log warn
+
+Then you normally see something like:
+
+2016.02.08 21:54:16 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.api - MapDBStorage.store(gabu,zo)
+2016.02.08 21:54:16 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.api - start
+2016.02.08 21:54:16 WARNING - Bundle: org.apache.felix.dependencymanager.samples.dynamicdep.api - init: storage type=mapdb, storageRequired=true
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README
index c575e65..7f5569c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/README
@@ -18,7 +18,13 @@
 This sample provides an example with one service consumer and a service provider, both declared
 using DM Annotations. The ServiceConsumer is also depending on a configuration pid  (see
 org.apache.felix.dependencymanager.samples.conf.Configurator).
-To see logs, just type this under gogo shell:
 
-g! log info|grep hello.annot
+Click on "hello.annot.bndrun" descriptor and run it. Then just type:
+
+g! log warn
+
+and you should see:
+
+2016.02.08 21:57:47 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.annot - ServiceProviderImpl.hello
+2016.02.08 21:57:47 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.annot - ServiceConsumer.start: calling service.hello() ...
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java
index cee1d93..4093371 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceConsumer.java
@@ -48,7 +48,7 @@
 
     @Start
     public void start() {
-        log.log(LogService.LOG_INFO, "ServiceConsumer.start: calling service.hello() ...");
+        log.log(LogService.LOG_WARNING, "ServiceConsumer.start: calling service.hello() ...");
         this.service.hello();
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java
index c131db3..eee8947 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/annot/ServiceProviderImpl.java
@@ -34,6 +34,6 @@
 
     @Override
     public void hello() {
-        log.log(LogService.LOG_INFO, "ServiceProviderImpl.hello");
+        log.log(LogService.LOG_WARNING, "ServiceProviderImpl.hello");
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README
index ff16694..05545f3 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/README
@@ -17,7 +17,13 @@
 
 This sample provides a DM Activator declaring one service consumer and a service provider. The
 ServiceConsumer is also depending on a configuration pid  (see org.apache.felix.dependencymanager.samples.conf.Configurator).
-To see logs, just type this under gogo shell:
 
-g! log info|grep hello.annot
+Click on "hello.api.bndrun" descriptor and run it. Then just type:
+
+g! log warn
+
+and you should see:
+
+2016.02.08 21:59:31 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.api - ServiceProviderImpl.hello
+2016.02.08 21:59:31 WARNING - Bundle: org.apache.felix.dependencymanager.samples.hello.api - ServiceConsumer.start: calling service.hello()
 
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java
index e287667..058a5db 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceConsumer.java
@@ -37,7 +37,7 @@
     }
 
     public void start() {
-        log.log(LogService.LOG_INFO, "ServiceConsumer.start: calling service.hello()");
+        log.log(LogService.LOG_WARNING, "ServiceConsumer.start: calling service.hello()");
         this.service.hello();
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java
index 4da110c..400f67b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/api/ServiceProviderImpl.java
@@ -30,6 +30,6 @@
 
     @Override
     public void hello() {
-        log.log(LogService.LOG_INFO, "ServiceProviderImpl.hello");
+        log.log(LogService.LOG_WARNING, "ServiceProviderImpl.hello");
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
index d71fa00..7134c9c 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
@@ -18,6 +18,9 @@
  */
 package org.apache.felix.dependencymanager.samples.tpool;
 
+import java.util.Properties;
+
+import org.apache.felix.dependencymanager.samples.tpool.executor.ComponentExecutorFactoryImpl;
 import org.apache.felix.dm.ComponentExecutorFactory;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
@@ -32,7 +35,18 @@
     @Override
     public void init(BundleContext context, DependencyManager mgr) throws Exception {
         mgr.add(createComponent()
-            .setInterface(ComponentExecutorFactory.class.getName(), null)
-            .setImplementation(ComponentExecutorFactoryImpl.class));
+           .setInterface(ComponentExecutorFactory.class.getName(), null)
+           .setImplementation(ComponentExecutorFactoryImpl.class));
+        
+        // Create two synchronous components
+        mgr.add(createComponent().setImplementation(new MyComponent("Component 1")));
+        mgr.add(createComponent().setImplementation(new MyComponent("Component 2")));
+
+        // And two components which will be managed and started concurrently.
+        Properties properties = new Properties();
+        properties.put("parallel", "true");
+
+        mgr.add(createComponent().setImplementation(new MyComponent("Parallel Component 3")).setServiceProperties(properties));
+        mgr.add(createComponent().setImplementation(new MyComponent("Parallel Component 4")).setServiceProperties(properties));
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/MyComponent.java
similarity index 65%
rename from dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
rename to dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/MyComponent.java
index 63fb402..d637db1 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/MyComponent.java
@@ -18,21 +18,18 @@
  */
 package org.apache.felix.dependencymanager.samples.tpool;
 
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-import org.apache.felix.dm.Component;
-import org.apache.felix.dm.ComponentExecutorFactory;
-
 /**
+ * A first component that is not handled in parallel.
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
-public class ComponentExecutorFactoryImpl implements ComponentExecutorFactory {
-    final static int SIZE = Runtime.getRuntime().availableProcessors();
-    final static Executor m_threadPool = Executors.newFixedThreadPool(SIZE);
+public class MyComponent {
+    private final String m_name;
+    
+    MyComponent(String name) {
+        m_name = name;
+    }
 
-    @Override
-    public Executor getExecutorFor(Component component) {
-        return m_threadPool;
+    public void start() throws InterruptedException {
+        System.out.println("Starting Component " + m_name + " current thread=" + Thread.currentThread());
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README
index b75404e..4e549fe 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/README
@@ -14,17 +14,50 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+The Activator you will find in this example registers a ComponentExecutorFactory in the OSGi service
+registry to enable parallel activation of (some or all) components 
 
-The Activator you will find in this bundle registers a ComponentExecutorFactory in the OSGi service
-registry to enable parallelism. DependencyManager core will use the Executor returned by the
-ComponentExecutorFactory in order to handle components dependencies/lifecycle callbacks
-concurrently.
+DM uses a whiteboard pattern approach in order to handle components concurrently: your application has to register a ComponentExecutorFactory in 
+the registry and DM will use it when deciding if components must be started concurrently (or not). By implementing yourself a ComponentExecutorFactory, 
+you are allowed to first decide if a given component should be started concurrently, and also choose the threadpool you like, 
+possibly a standard jdk threadpool, or some other advanced queuing libraries, like "hawtdispatch" ...
 
-Important note: since we are using the DM API to declare our threadpool, we have to disable
-parallelism for our "org.apache.felix.dependencymanager.samples.tpool.ThreadPool" component. 
-To do so, we define the following OSGi service property (see the bnd.bnd configuration file):
+The ComponentExecutorFactory has a single method:
 
-->
+    /**
+     * Returns an Executor used to handle and start the given component, or null if the component must be started synchronously.
+     */
+    public Executor getExecutorFor(Component component) {
+    }
+    
+To indicate that DM should "wait for" a ComponentExecutorFactory before starting to handle any components, then you have to declare 
+in the bundle context properties the following parameter:
 
-org.apache.felix.dependencymanager.parallelism=!org.apache.felix.dependencymanager.samples.tpool,*
+    org.apache.felix.dependencymanager.parallelism=*
 
+Using the above property will ensure that DM cache any added DM components until ComponentExecutorFactory is available from the OSGi registry.
+Hence, using the above property avoids you to use start level service in order to make sure all components are started concurrently, even if the
+bundle containing your ComponentExecutorFactory service is started lastly.
+
+Finally, if you want to start all components in parallel, except some; then you can specify the list of packages to be excluded like this:
+
+    org.apache.felix.dependencymanager.parallelism=!package.to.exclude,*
+
+Here, components having a package that is starting with "package.to.exclude" won't be started concurrently.
+
+Now, let's describe the example: it registers a ComponentExecutorFactory that only makes concurrent components 
+which provide a "parallel=true" service property (you can specify a service property even if the component does not register any services).
+Since we define ComponentExecutorFactory using DM API, we also have to disable parallelism for it, by declaring its package in the following parameter from 
+the bundle context properties:
+
+   org.apache.felix.dependencymanager.parallelism=!org.apache.felix.dependencymanager.samples.tpool.executor,*
+   
+To start the example, click on "tpool.bndrun" descriptor and run it.
+You will then see:
+
+Starting Component Component 1 current thread=Thread[main,5,main]
+Starting Component Component 2 current thread=Thread[main,5,main]
+Starting Component Parallel Component 3 current thread=Thread[pool-3-thread-1,5,main]
+Starting Component Parallel Component 4 current thread=Thread[pool-3-thread-2,5,main]
+
+Here, the Component 3 and 4 are started in the threadpool, while the Component 2 is started synchronously from the main thread.
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/executor/ComponentExecutorFactoryImpl.java
similarity index 65%
copy from dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
copy to dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/executor/ComponentExecutorFactoryImpl.java
index 63fb402..8518f17 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ComponentExecutorFactoryImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/executor/ComponentExecutorFactoryImpl.java
@@ -16,23 +16,35 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.dependencymanager.samples.tpool;
+package org.apache.felix.dependencymanager.samples.tpool.executor;
 
+import java.util.Dictionary;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.ComponentDeclaration;
 import org.apache.felix.dm.ComponentExecutorFactory;
 
 /**
  * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
  */
 public class ComponentExecutorFactoryImpl implements ComponentExecutorFactory {
-    final static int SIZE = Runtime.getRuntime().availableProcessors();
-    final static Executor m_threadPool = Executors.newFixedThreadPool(SIZE);
+    final static Executor m_threadPool = Executors.newFixedThreadPool(4);
 
+    /**
+     * Make concurrent a component only if it has a "parallel=true" property.
+     */
     @Override
     public Executor getExecutorFor(Component component) {
-        return m_threadPool;
+        ComponentDeclaration decl = component.getComponentDeclaration();
+        Dictionary<String, Object> properties = decl.getServiceProperties();
+        if (properties != null && "true".equals(properties.get("parallel"))) {
+            // the component will be handled in the threadpool.
+            return m_threadPool;
+        } else {
+            // the component won't be handled in parallel.
+            return null; 
+        }
     }
 }
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd
index 428c751..809a515 100644
--- a/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bnd
@@ -14,8 +14,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Private-Package:  \
-	org.apache.felix.dependencymanager.samples.tpool
+Private-Package: \
+	org.apache.felix.dependencymanager.samples.tpool,\
+	org.apache.felix.dependencymanager.samples.tpool.executor
 Bundle-Activator: org.apache.felix.dependencymanager.samples.tpool.Activator
 Bundle-Description: Dependency Manager threadpool used by examples 
 Bundle-Name: Dependency Manager Examples ThreadPool
\ No newline at end of file
diff --git a/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bndrun b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bndrun
new file mode 100644
index 0000000..add932b
--- /dev/null
+++ b/dependencymanager/org.apache.felix.dependencymanager.samples/tpool.bndrun
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
+-runee: JavaSE-1.8
+-runsystemcapabilities: ${native_capability}
+
+-resolve.effective: active;skip:="osgi.service"
+
+-runbundles: \
+	org.apache.felix.metatype;version=1.0.4,\
+	org.apache.felix.log;version=1.0.1,\
+	org.apache.felix.gogo.command;version=0.14.0,\
+	org.apache.felix.gogo.runtime;version=0.12.0,\
+	org.apache.felix.gogo.shell;version=0.10.0,\
+	org.apache.felix.configadmin;version=1.8.6,\
+	org.apache.felix.eventadmin;version=1.4.3,\
+	biz.aQute.bndlib;version=2.3.0,\
+	org.apache.felix.dependencymanager;version=latest,\
+	org.apache.felix.dependencymanager.shell;version=latest,\
+	org.apache.felix.dependencymanager.runtime;version=latest,\
+    org.apache.felix.dependencymanager.samples.tpool;version=latest
+
+-runproperties:  \
+	org.apache.felix.dependencymanager.parallel='!org.apache.felix.dependencymanager.samples.tpool.executor, *',\
+	org.apache.felix.dependencymanager.loglevel=2,\
+	org.apache.felix.log.maxSize=100000,\
+	org.apache.felix.log.storeDebug=true
+
+
+
