diff --git a/ipojo/tests/pom.xml b/ipojo/tests/pom.xml
index d0a91ca..0f42790 100644
--- a/ipojo/tests/pom.xml
+++ b/ipojo/tests/pom.xml
@@ -23,26 +23,18 @@
   <version>0.7.6-SNAPSHOT</version>
   <name>Apache Felix iPOJO Tests</name>
   <packaging>pom</packaging>
-  <profiles>
-      <profile>
-              <id>java5</id>
-              <activation>
-                      <jdk>1.5</jdk>
-              </activation>
-              <modules>
-                     <module>tests.core</module>
-					<module>tests.composite</module>
-              </modules>
-      </profile>
-      <profile>
-              <id>java6</id>
-              <activation>
-                      <jdk>1.6</jdk>
-              </activation>
-              <modules>
-                      <module>tests.core</module>
-					  <module>tests.composite</module>
-              </modules>
-      </profile>
-</profiles>  
+  
+  <modules>
+    <module>tests.core.manipulation</module>
+	<module>tests.core.factories</module>
+	<module>tests.core.lifecycle.controller</module>
+	<module>tests.core.service.providing</module>
+	<module>tests.core.lifecycle.callback</module>
+	<module>tests.core.service.dependency</module>
+	<module>tests.core.configuration</module>
+	<module>tests.core.external.handlers</module>
+	<module>tests.core.bad.configurations</module>
+	<module>tests.composite</module>
+   </modules>
+  
 </project>
\ No newline at end of file
diff --git a/ipojo/tests/tests.composite/pom.xml b/ipojo/tests/tests.composite/pom.xml
index 3a2ffeb..9162a38 100644
--- a/ipojo/tests/tests.composite/pom.xml
+++ b/ipojo/tests/tests.composite/pom.xml
@@ -54,11 +54,6 @@
 			<artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
-		<dependency>
-			<groupId>ipojo.tests</groupId>
-			<artifactId>tests.core</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
 	</dependencies>
 	<build>
 		<plugins>
@@ -81,9 +76,6 @@
 						<Test-Suite>
 							org.apache.felix.ipojo.test.composite.CompositeTestSuite
 						</Test-Suite>
-						<Import-Package>
-							org.apache.felix.ipojo.test.scenarios.service,*
-						</Import-Package>
 					</instructions>
 				</configuration>
 			</plugin>
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/Baz2CheckProvider.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/Baz2CheckProvider.java
index 662c8e2..9fcc4fd 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/Baz2CheckProvider.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/Baz2CheckProvider.java
@@ -20,9 +20,9 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.CheckService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class Baz2CheckProvider implements CheckService {
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/BazProviderType1.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/BazProviderType1.java
index 6917d39..fd495e0 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/BazProviderType1.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/BazProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.BazService;
 
 public class BazProviderType1 implements BazService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/CheckProviderParentClass.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/CheckProviderParentClass.java
index 675fe41..2294ba3 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/CheckProviderParentClass.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.component;
+package org.apache.felix.ipojo.test.composite.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/CheckServiceProvider.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/CheckServiceProvider.java
index cd2b927..9a17f1f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/CheckServiceProvider.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.component;
+package org.apache.felix.ipojo.test.composite.component;
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.CheckService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooBarProviderType1.java
similarity index 87%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooBarProviderType1.java
index 2b739b4..719f235 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooBarProviderType1.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.component;
+package org.apache.felix.ipojo.test.composite.component;
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.BarService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 
 public class FooBarProviderType1 implements FooService, BarService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderType1.java
similarity index 77%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderType1.java
index 3fe9bad..fc2ea2b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderType1.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.component;
+package org.apache.felix.ipojo.test.composite.component;
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
@@ -33,19 +33,6 @@
     private static FooProviderType1 singleton;
     private static int count = 0;
     
-    private static FooProviderType1 singleton(BundleContext bc) {
-        if (singleton == null) {
-            count++;
-            singleton = new FooProviderType1(bc);
-        }
-        return singleton;
-    }
-    
-    public static FooProviderType1 several(BundleContext bc) {
-        count++;
-        return new FooProviderType1(bc);
-    }
-        
     public FooProviderType1(BundleContext bc) {
         if (bc ==null) {
             throw new RuntimeException("Injected bundle context null");
@@ -101,17 +88,5 @@
 	public long getLong() { return 1; }
 
 	public Boolean getObject() { return new Boolean(true); }
-	
-	/**
-	 * Custom constructor.
-	 * @param bar
-	 * @param foo
-	 * @param bc
-	 */
-	public FooProviderType1(int bar, String foo, BundleContext bc) {
-	    m_bar = bar;
-	    m_foo = foo;
-	    m_context = bc;
-	}
 
 }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderTypeDyn.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderTypeDyn.java
index 39f3918..ec5261b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderTypeDyn.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.component;
+package org.apache.felix.ipojo.test.composite.component;
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 
 public class FooProviderTypeDyn implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderTypeDyn2.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderTypeDyn2.java
index f5f233a..757ae24 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/component/FooProviderTypeDyn2.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.component;
+package org.apache.felix.ipojo.test.composite.component;
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 
 public class FooProviderTypeDyn2 implements FooService {
 	
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/FilteredExport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/FilteredExport.java
index 938bb94..8353c03 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/FilteredExport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/FilteredExport.java
@@ -23,9 +23,9 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class FilteredExport extends OSGiTestCase {
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/MultipleExport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/MultipleExport.java
index 10a0a4e..fed07ba 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/MultipleExport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/MultipleExport.java
@@ -23,9 +23,9 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class MultipleExport extends OSGiTestCase {
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalExport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalExport.java
index 5c30d24..4f78f49 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalExport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalExport.java
@@ -23,9 +23,9 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class OptionalExport extends OSGiTestCase {
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalMultipleExport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalMultipleExport.java
index 997be4e..a285ef0 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalMultipleExport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/OptionalMultipleExport.java
@@ -23,9 +23,9 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class OptionalMultipleExport extends OSGiTestCase {
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/SimpleExport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/SimpleExport.java
index 5ee7cd7..b0bf922 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/SimpleExport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/exporter/SimpleExport.java
@@ -23,9 +23,9 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class SimpleExport extends OSGiTestCase {
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedFilteredImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedFilteredImport.java
index 659705f..1466677 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedFilteredImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedFilteredImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class DelayedFilteredImport extends OSGiTestCase {
@@ -47,7 +47,7 @@
 		
 		import1.stop();
 		
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p1 = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedMultipleImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedMultipleImport.java
index 99b359c..47688ee 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedMultipleImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedMultipleImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class DelayedMultipleImport extends OSGiTestCase {
@@ -47,7 +47,7 @@
 		
 		import2.stop();
 		
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p1 = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalImport.java
index 41ffb28..6e36797 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class DelayedOptionalImport extends OSGiTestCase {
@@ -47,7 +47,7 @@
 		
 		import3.stop();
 		
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p1 = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalMultipleImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalMultipleImport.java
index de9d875..0dac390 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalMultipleImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedOptionalMultipleImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class DelayedOptionalMultipleImport extends OSGiTestCase {
@@ -47,7 +47,7 @@
 		
 		import4.stop();
 		
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p1 = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedSimpleImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedSimpleImport.java
index e29055d..2d89ee8 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedSimpleImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/DelayedSimpleImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class DelayedSimpleImport extends OSGiTestCase {
@@ -47,7 +47,7 @@
 		
 		import1.stop();
 		
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p1 = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/FilteredImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/FilteredImport.java
index 69b3a37..221ecda 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/FilteredImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/FilteredImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class FilteredImport extends OSGiTestCase {
@@ -47,10 +47,10 @@
 		}
 		import1.stop();
 		
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
-		fooProvider2 = Utils.getFactoryByName(context, "FooProviderType-2");
+		fooProvider2 = Utils.getFactoryByName(context, "COMPO-FooProviderType-2");
 		assertNotNull("Check fooProvider availability", fooProvider2);
 		
 		Properties p1 = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/MultipleImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/MultipleImport.java
index 4d5df53..c8eedce 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/MultipleImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/MultipleImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class MultipleImport extends OSGiTestCase {
@@ -34,7 +34,7 @@
 	Factory fooProvider;
 
 	public void setUp() {
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalImport.java
index 69cd1bb..0fb3f89 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class OptionalImport extends OSGiTestCase {
@@ -34,7 +34,7 @@
 	Factory fooProvider;
 
 	public void setUp() {
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalMultipleImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalMultipleImport.java
index 811301d..a7c71b0 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalMultipleImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/OptionalMultipleImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class OptionalMultipleImport extends OSGiTestCase {
@@ -34,7 +34,7 @@
 	Factory fooProvider;
 
 	public void setUp() {
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/SimpleImport.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/SimpleImport.java
index 9bcdc87..31f2b5a 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/SimpleImport.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/importer/SimpleImport.java
@@ -24,8 +24,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class SimpleImport extends OSGiTestCase {
@@ -34,7 +34,7 @@
 	Factory fooProvider;
 
 	public void setUp() {
-		fooProvider = Utils.getFactoryByName(context, "FooProviderType-1");
+		fooProvider = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		assertNotNull("Check fooProvider availability", fooProvider);
 		
 		Properties p = new Properties();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/FactoryManagementTest.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/FactoryManagementTest.java
index 8e238a3..43433a9 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/FactoryManagementTest.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/FactoryManagementTest.java
@@ -30,8 +30,8 @@
 import org.apache.felix.ipojo.architecture.ComponentTypeDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.metadata.Element;
+import org.apache.felix.ipojo.test.composite.service.CheckService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
@@ -217,7 +217,7 @@
 		
 		ServiceContext sc2 = Utils.getServiceContext(empty2);
 		
-		Factory fact1 = Utils.getFactoryByName(sc2, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(sc2, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -225,7 +225,7 @@
 			client = fact1.createComponentInstance(props);
 		} catch (Exception e) { e.printStackTrace(); fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(sc2, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(sc2, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRangeTest.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRangeTest.java
index 740f129..a2d9f3c 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRangeTest.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRangeTest.java
@@ -24,9 +24,9 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.CheckService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 
@@ -53,7 +53,7 @@
 	public void testLevelOne1() {
 		ServiceContext sc2 = Utils.getServiceContext(empty);
 		
-		Factory fact1 = Utils.getFactoryByName(sc2, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(sc2, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -61,7 +61,7 @@
 			client = fact1.createComponentInstance(props);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(sc2, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(sc2, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
@@ -105,7 +105,7 @@
 	public void testLevelOne2() {
 		ServiceContext sc2 = Utils.getServiceContext(empty);
 		
-		Factory fact1 = Utils.getFactoryByName(sc2, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(sc2, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -113,7 +113,7 @@
 			client = fact1.createComponentInstance(props, sc2);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(sc2, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(sc2, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
@@ -157,7 +157,7 @@
 	public void testLevelOne3() {
 		ServiceContext sc2 = Utils.getServiceContext(empty);
 		
-		Factory fact1 = Utils.getFactoryByName(context, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(context, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -165,7 +165,7 @@
 			client = fact1.createComponentInstance(props, sc2);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(context, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
@@ -220,7 +220,7 @@
 		
 		ServiceContext sc2 = Utils.getServiceContext(empty2);
 		
-		Factory fact1 = Utils.getFactoryByName(sc2, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(sc2, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -228,7 +228,7 @@
 			client = fact1.createComponentInstance(props);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(sc2, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(sc2, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
@@ -288,7 +288,7 @@
 		
 		ServiceContext sc2 = Utils.getServiceContext(empty2);
 		
-		Factory fact1 = Utils.getFactoryByName(sc1, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(sc1, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -296,7 +296,7 @@
 			client = fact1.createComponentInstance(props, sc2);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(sc1, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(sc1, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
@@ -356,7 +356,7 @@
 		
 		ServiceContext sc2 = Utils.getServiceContext(empty2);
 		
-		Factory fact1 = Utils.getFactoryByName(context, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(context, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -364,7 +364,7 @@
 			client = fact1.createComponentInstance(props, sc2);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(context, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
@@ -424,7 +424,7 @@
 		
 		ServiceContext sc2 = Utils.getServiceContext(empty2);
 		
-		Factory fact1 = Utils.getFactoryByName(sc2, "SimpleCheckServiceProvider");
+		Factory fact1 = Utils.getFactoryByName(sc2, "COMPO-SimpleCheckServiceProvider");
 		Properties props = new Properties();
 		props.put("name", "client");
 		ComponentInstance client = null;
@@ -432,7 +432,7 @@
 			client = fact1.createComponentInstance(props, sc2);
 		} catch(Exception e) { fail("Cannot instantiate the client : " + e.getMessage()); }
 		
-		Factory fact2 = Utils.getFactoryByName(sc2, "FooProviderType-1");
+		Factory fact2 = Utils.getFactoryByName(sc2, "COMPO-FooProviderType-1");
 		Properties props2 = new Properties();
 		props2.put("name", "provider");
 		ComponentInstance provider = null;
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRegistryTest.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRegistryTest.java
index 0b76bcb..14b3f61 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRegistryTest.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/infrastructure/ServiceRegistryTest.java
@@ -28,7 +28,7 @@
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.context.ServiceRegistry;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
+import org.apache.felix.ipojo.test.composite.service.BarService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceEvent;
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java
index 433f62f..179c296 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java
@@ -27,8 +27,8 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class SimpleInstance extends OSGiTestCase {
@@ -39,8 +39,8 @@
 	
 	
 	public void setUp() {
-        fooFactory1 = (ComponentFactory) Utils.getFactoryByName(context, "FooProviderType-1");
-        fooFactory2 = (ComponentFactory) Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+        fooFactory1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooProviderType-1");
+        fooFactory2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooProviderType-Dyn2");
         compoFactory = (ComponentFactory) Utils.getFactoryByName(context, "composite.inst.1");
 		Factory fact = Utils.getFactoryByName(context, "composite.empty");
 		Properties props = new Properties();
@@ -59,14 +59,15 @@
 	
 	public void testCreation() {
 		Properties props = new Properties();
-		props.put("name", "under");
+		props.put("name", "under-A");
 		ComponentInstance under = null;
 		try {
 			under = compoFactory.createComponentInstance(props);
 		} catch(Exception e) {
 		    e.printStackTrace();
 			fail("Cannot instantiate under from " + compoFactory.getName() + " -> " + e.getMessage());
-		}
+		}      
+		
 		assertTrue("Check instance validity", under.getState() == ComponentInstance.VALID);
 		under.dispose();
 	}
@@ -203,9 +204,9 @@
 		assertEquals("Check instance name" , id.getName(), "under");
 		assertEquals("Check component type name" , id.getComponentDescription().getName(), "composite.bar.1");
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/ConfigurableInstantiation.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/ConfigurableInstantiation.java
index a7de283..2c851ea 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/ConfigurableInstantiation.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/ConfigurableInstantiation.java
@@ -23,9 +23,10 @@
 import org.apache.felix.ipojo.ComponentFactory;
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class ConfigurableInstantiation extends OSGiTestCase {
@@ -45,13 +46,14 @@
 	
 	public void testAccept() {
 		Properties props = new Properties();
-		props.put("name", "under");
+		props.put("name", "under-A");
 		ComponentInstance under = null;
 		try {
 			under = acceptF.createComponentInstance(props);
 		} catch(Exception e) {
 			fail("Cannot instantiate under : " + e.getMessage());
 		}
+		
 		assertTrue("Check instance validity", under.getState() == ComponentInstance.VALID);
 		ServiceContext sc = Utils.getServiceContext(under);
 		ServiceReference ref = sc.getServiceReference(FooService.class.getName());
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/MultipleInstantiation.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/MultipleInstantiation.java
index 066f29d..f155add 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/MultipleInstantiation.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/MultipleInstantiation.java
@@ -27,8 +27,8 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BarService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
 import org.osgi.framework.ServiceReference;
 
 public class MultipleInstantiation extends OSGiTestCase {
@@ -128,9 +128,9 @@
 		ServiceContext sc = Utils.getServiceContext(under);
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
@@ -166,9 +166,9 @@
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		ServiceContext sc2 = Utils.getServiceContext(under);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
@@ -211,9 +211,9 @@
 		assertEquals("Check instance name" , id.getName(), "under");
 		assertEquals("Check component type name" , id.getComponentDescription().getName(), "composite.bar.2");
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalInstantiation.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalInstantiation.java
index 64f80f9..e617d64 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalInstantiation.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalInstantiation.java
@@ -27,8 +27,8 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BarService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
 import org.osgi.framework.ServiceReference;
 
 public class OptionalInstantiation extends OSGiTestCase {
@@ -124,9 +124,9 @@
 		}
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
@@ -159,9 +159,9 @@
 		}
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
@@ -203,9 +203,9 @@
 		assertEquals("Check instance name" , id.getName(), "under");
 		assertEquals("Check component type name" , id.getComponentDescription().getName(), "composite.bar.3");
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		
 		fact1.stop();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalMultipleInstantiation.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalMultipleInstantiation.java
index 19984d0..a3d9351 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalMultipleInstantiation.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/OptionalMultipleInstantiation.java
@@ -25,8 +25,8 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BarService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
 
 public class OptionalMultipleInstantiation extends OSGiTestCase {
 
@@ -127,9 +127,9 @@
 		ServiceContext sc = Utils.getServiceContext(under);
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
@@ -165,9 +165,9 @@
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		ServiceContext sc2 = Utils.getServiceContext(under);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/SimpleInstantiation.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/SimpleInstantiation.java
index 14b1e1d..4430c19 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/SimpleInstantiation.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/instantiator/SimpleInstantiation.java
@@ -27,8 +27,8 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BarService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
 import org.osgi.framework.ServiceReference;
 
 public class SimpleInstantiation extends OSGiTestCase {
@@ -125,9 +125,9 @@
 		}
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		
 		fact1.stop();
@@ -159,9 +159,9 @@
 		}
 		assertTrue("Check instance validity - 1", under.getState() == ComponentInstance.VALID);
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
@@ -201,9 +201,9 @@
 		assertEquals("Check instance name" , id.getName(), "under");
 		assertEquals("Check component type name" , id.getComponentDescription().getName(), "composite.bar.1");
 		
-		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-1");
-		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-2");
-		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "FooBarProviderType-3");
+		ComponentFactory fact1 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-1");
+		ComponentFactory fact2 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-2");
+		ComponentFactory fact3 = (ComponentFactory) Utils.getFactoryByName(context, "COMPO-FooBarProviderType-3");
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/BarService.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
rename to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/BarService.java
index 727e845..8b24f04 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/BarService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.composite.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/BazService.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java
rename to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/BazService.java
index 115b5de..88b78a1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/BazService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.composite.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/CheckService.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/CheckService.java
index 62f254c..8eb499f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.composite.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/FooService.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/FooService.java
index 78693cf..bbfa2c9 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.composite.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/test/CompositeTest.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/test/CompositeTest.java
index 9f7c6c4..e7f73bb 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/test/CompositeTest.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/test/CompositeTest.java
@@ -24,10 +24,10 @@
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.composite.service.BazService;
+import org.apache.felix.ipojo.test.composite.service.CheckService;
+import org.apache.felix.ipojo.test.composite.service.FooService;
 import org.apache.felix.ipojo.test.composite.util.Utils;
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.composite/src/main/resources/metadata.xml b/ipojo/tests/tests.composite/src/main/resources/metadata.xml
index 2357580..23636cf 100644
--- a/ipojo/tests/tests.composite/src/main/resources/metadata.xml
+++ b/ipojo/tests/tests.composite/src/main/resources/metadata.xml
@@ -1,26 +1,98 @@
 <ipojo xmlns:cs="org.apache.felix.ipojo.test.composite.handler.CheckServiceHandler">
+	<!-- Used component type -->
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooProviderType1"
+		factory="COMPO-FooProviderType-1" architecture="true">
+		<provides />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooProviderType1"
+		name="COMPO-FooProviderType-2" architecture="true">
+		<provides>
+			<property name="int" type="int" value="2" />
+			<property name="long" type="long" value="40" />
+			<property name="string" type="java.lang.String" value="foo" />
+			<property name="strAProp" type="java.lang.String[]"
+				value="{foo, bar}" />
+			<property name="intAProp" type="int[]" value="{1,2,3}" />
+		</provides>
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooProviderTypeDyn"
+		name="COMPO-FooProviderType-Dyn" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="2" />
+			<property name="boolean" field="boolProp" value="false" />
+			<property name="string" field="strProp" value="foo" />
+			<property name="strAProp" field="strAProp"
+				value="{foo, bar}" />
+			<property name="intAProp" field="intAProp" value="{ 1,2,3}" />
+		</provides>
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooProviderTypeDyn2"
+		name="COMPO-FooProviderType-Dyn2" factory="true" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="4" />
+			<property name="boolean" field="boolProp" />
+			<property name="string" field="strProp" />
+			<property name="strAProp" field="strAProp" />
+			<property name="intAProp" field="intAProp"
+				value="{1, 2,3 }" />
+		</provides>
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.CheckServiceProvider"
+		factory="COMPO-SimpleCheckServiceProvider" architecture="true">
+		<requires field="fs" />
+		<provides />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooBarProviderType1"
+		factory="COMPO-FooBarProviderType-1" architecture="true">
+		<provides />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooBarProviderType1"
+		factory="COMPO-FooBarProviderType-2" architecture="true">
+		<provides
+			interface="{org.apache.felix.ipojo.test.composite.service.FooService, org.apache.felix.ipojo.test.composite.service.BarService }" />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.composite.component.FooBarProviderType1"
+		factory="COMPO-FooBarProviderType-3" architecture="true">
+		<provides
+			interface="{org.apache.felix.ipojo.test.composite.service.FooService}">
+			<property name="baz" type="java.lang.String" value="foo" />
+		</provides>
+		<provides
+			interface="{org.apache.felix.ipojo.test.composite.service.BarService}">
+			<property name="baz" type="java.lang.String" value="bar" />
+		</provides>
+	</component>
+	
 	<!--  Composite -->
 	<composite name="composite.empty" factory="true" architecture="true">
 	</composite>
 	
 	<composite name="composite.bar.1" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BarService"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BarService"/>
 	</composite>
 	
 	<composite name="composite.bar.2" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BarService" aggregate="true"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BarService" aggregate="true"/>
 	</composite>
 	
 	<composite name="composite.bar.3" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BarService" optional="true"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BarService" optional="true"/>
 	</composite>
 	
 	<composite name="composite.bar.4" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.FooService" aggregate="true" optional="true"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.FooService" aggregate="true" optional="true"/>
 	</composite>
 	
 	<composite name="composite.bar.5-accept" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.FooService">
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.FooService">
 			<property name="boolean" value="true"/>
 			<property name="string" value="foo"/>
 			<property name="strAprop" value="{foo, bar, baz}"/>
@@ -29,7 +101,7 @@
 	</composite>
 	
 	<composite name="composite.bar.5-refuse1" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BarService">
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BarService">
 			<property name="foo" value="bar"/>
 			<property name="boolean" value="true"/>
 			<property name="string" value="foo"/>
@@ -39,15 +111,15 @@
 	</composite>
 	
 	<composite name="composite.bar.5-refuse2" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BarService">
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BarService">
 			<property name="string" value="foo"/>
 			<property name="strAprop" value="{foo, bar, baz}"/>
 		</subservice>
 	</composite>
 	
 	<composite name="composite.inst.1" factory="true" architecture="true">
-		<instance component="FooProviderType-1" /> <!-- name="FooProv"  -->
-		<instance component="FooProviderType-Dyn2">
+		<instance component="COMPO-FooProviderType-1" /> <!-- name="FooProv"  -->
+		<instance component="COMPO-FooProviderType-Dyn2">
 			<property name="boolean" value="true"/>
 			<property name="string" value="foo"/>
 			<property name="strAProp" value="{a,b,c}"/>
@@ -55,23 +127,23 @@
 	</composite>
 	
 	<composite name="composite.requires.1" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.FooService" scope="composite"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.FooService" scope="composite"/>
 	</composite>
 	
 	<composite name="composite.requires.2" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.FooService" aggregate="true" scope="composite"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.FooService" aggregate="true" scope="composite"/>
 	</composite>
 	
 	<composite name="composite.requires.3" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.FooService" optional="true" scope="composite"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.FooService" optional="true" scope="composite"/>
 	</composite>
 	
 	<composite name="composite.requires.4" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.FooService" optional="true" aggregate="true" scope="composite"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.FooService" optional="true" aggregate="true" scope="composite"/>
 	</composite>
 	
 	<composite name="composite.requires.5" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.FooService" filter="(&amp;(int=2)(long=40))" scope="composite"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.FooService" filter="(&amp;(int=2)(long=40))" scope="composite"/>
 	</composite>
 	
 	<component className="org.apache.felix.ipojo.test.composite.component.BazProviderType1" factory="BazProviderType" scope="composite">
@@ -79,28 +151,28 @@
 	</component>
 	
 	<composite name="composite.export.1" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" aggregate="true" optional="true" filter="(!(instance.name=export))" scope="composite"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.BazService" aggregate="true" optional="true" filter="(!(instance.name=export))" scope="composite"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService"/>
 	</composite>
 	
 	<composite name="composite.export.2" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" scope="composite" aggregate="true" optional="true" filter="(!(instance.name=export))"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" optional="true"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.BazService" scope="composite" aggregate="true" optional="true" filter="(!(instance.name=export))"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService" optional="true"/>
 	</composite>
 	
 	<composite name="composite.export.3" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" scope="composite" aggregate="true" optional="true" filter="(!(instance.name=export))"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" aggregate="true"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.BazService" scope="composite" aggregate="true" optional="true" filter="(!(instance.name=export))"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService" aggregate="true"/>
 	</composite>
 	
 	<composite name="composite.export.4" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" aggregate="true" optional="true" filter="(!(instance.name=export))" scope="composite"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" aggregate="true" optional="true"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.BazService" aggregate="true" optional="true" filter="(!(instance.name=export))" scope="composite"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService" aggregate="true" optional="true"/>
 	</composite>
 	
 	<composite name="composite.export.5" architecture="true">
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" aggregate="true" optional="true" filter="(!(instance.name=export))" scope="composite"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" filter="(instance.name=foo1)"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.BazService" aggregate="true" optional="true" filter="(!(instance.name=export))" scope="composite"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService" filter="(instance.name=foo1)"/>
 	</composite>
 	
 	<component className="org.apache.felix.ipojo.test.composite.component.Baz2CheckProvider" factory="Baz2CheckProvider" architecture="true">
@@ -109,27 +181,27 @@
 	</component>
 
 	<composite name="composite.test.3" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" aggregate="true" filter="(factory.name=BazProviderType)"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BazService" aggregate="true" filter="(factory.name=BazProviderType)"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService"/>
 	</composite>
 	
 	<composite name="composite.test.2" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.CheckService" filter="(factory.name=Baz2CheckProvider)"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.CheckService"/>
-		<subservice action="import" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" scope="composite"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.CheckService" filter="(factory.name=Baz2CheckProvider)"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.CheckService"/>
+		<subservice action="import" specification="org.apache.felix.ipojo.test.composite.service.BazService" scope="composite"/>
 	</composite>
 	
 	<composite name="composite.test.1" architecture="true">
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" filter="(factory.name=composite.test.3)" />
-		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.CheckService" filter="(factory.name=composite.test.2)"/>
-		<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.CheckService"/>
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BazService" filter="(factory.name=composite.test.3)" />
+		<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.CheckService" filter="(factory.name=composite.test.2)"/>
+		<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.CheckService"/>
 	</composite>
 
 	<composite name="composite.instantiator" architecture="true">
-				<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.BazService" filter="(factory.name=composite.test.3)"/>
-				<subservice action="instantiate" specification="org.apache.felix.ipojo.test.scenarios.service.FooService"/>
-				<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.BazService"/>
-				<provides action="export" specification="org.apache.felix.ipojo.test.scenarios.service.FooService"/>
+				<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.BazService" filter="(factory.name=composite.test.3)"/>
+				<subservice action="instantiate" specification="org.apache.felix.ipojo.test.composite.service.FooService"/>
+				<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.BazService"/>
+				<provides action="export" specification="org.apache.felix.ipojo.test.composite.service.FooService"/>
 	</composite>
 
 	<!-- Test composition provides -->
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.bad.configurations/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.bad.configurations/pom.xml
index 4795777..62aafbd 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.bad.configurations/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Bad Configurations Test Suite</name>
+	<artifactId>tests.core.bad.configurations</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.bad.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.bad.BadTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadFactories.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadFactories.java
similarity index 100%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadFactories.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadFactories.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCCallback.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCCallback.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCCallback.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCCallback.java
index 8be6ac4..cca4fe5 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCCallback.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCCallback.java
@@ -34,7 +34,7 @@
 public class BadLFCCallback extends OSGiTestCase {
     
     private String clazz = "org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService";
-    private String type = "CallbackCheckService";
+    private String type = "BAD-CallbackCheckService";
     private Element manipulation;
     private Properties props;
     
@@ -117,7 +117,7 @@
         String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
         Element elem = null;
         try {
-            elem = ManifestMetadataParser.parse(header);
+            elem = ManifestMetadataParser.parseHeaderMetadata(header);
         } catch (ParseException e) {
             fail("Parse Exception when parsing iPOJO-Component");
         }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCController.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCController.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCController.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCController.java
index 8816530..9ebc8ed 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCController.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadLFCController.java
@@ -45,7 +45,7 @@
         Element controller = new Element("controller", "");
         controller.addAttribute(new Attribute("field", "controller")); // Missing field
         elem.addElement(controller);
-        elem.addElement(getManipulationForComponent("lcTest"));
+        elem.addElement(getManipulationForComponent("BAD-lcTest"));
         return elem;
     }
     
@@ -53,7 +53,7 @@
         String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
         Element elem = null;
         try {
-            elem = ManifestMetadataParser.parse(header);
+            elem = ManifestMetadataParser.parseHeaderMetadata(header);
         } catch (ParseException e) {
             fail("Parse Exception when parsing iPOJO-Component");
         }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadServiceDependencies.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadServiceDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadServiceDependencies.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadServiceDependencies.java
index 5bd57c0..43ebb13 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadServiceDependencies.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadServiceDependencies.java
@@ -30,12 +30,12 @@
 import org.apache.felix.ipojo.metadata.Element;
 import org.apache.felix.ipojo.parser.ManifestMetadataParser;
 import org.apache.felix.ipojo.parser.ParseException;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.BarService;
 
 public class BadServiceDependencies extends OSGiTestCase {
     
     private String clazz = "org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider";
-    private String type = "BothCheckServiceProvider";
+    private String type = "BAD-BothCheckServiceProvider";
     private Element manipulation;
     private Properties props;
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadTestSuite.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadTestSuite.java
similarity index 100%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadTestSuite.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/BadTestSuite.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/BarService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
copy to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/BarService.java
index 727e845..e3d8b8b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/BarService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.bad.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/CheckService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/CheckService.java
index 62f254c..f9e7e2d 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.bad.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/FooService.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/FooService.java
index 78693cf..cdebe3f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/bad/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.bad.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
similarity index 92%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
index 76176c8..86b9679 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.FooService;
 
 public class CallbackCheckService extends ParentClass implements CheckService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
copy to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
index 675fe41..05d9f31 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index cd2b927..71b5e77 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
rename to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
index c69bad5..8cef49f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.bad.service.CheckService;
 
 public class LifecycleControllerTest implements CheckService {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
copy to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
copy to ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.bad.configurations/src/main/resources/metadata.xml b/ipojo/tests/tests.core.bad.configurations/src/main/resources/metadata.xml
new file mode 100644
index 0000000..8222765
--- /dev/null
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/resources/metadata.xml
@@ -0,0 +1,31 @@
+<ipojo>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
+		factory="BAD-CallbackCheckService" architecture="true">
+		<requires field="fs" />
+		<provides />
+		<callback transition="validate" method="start" />
+		<callback transition="invalidate" method="stop" />
+	</component>
+	
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"
+		name="BAD-lcTest">
+		<provides />
+		<controller field="m_state" />
+		<properties>
+			<property name="conf" field="m_conf" method="setConf" />
+		</properties>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+		factory="BAD-BothCheckServiceProvider" architecture="true">
+		<requires field="fs">
+			<callback type="bind" method="bothBind" />
+			<callback type="unbind" method="bothUnbind" />
+		</requires>
+		<provides />
+	</component>
+	
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.configuration/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.configuration/pom.xml
index 4795777..d308dfc 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.configuration/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Configuration Management Test Suite</name>
+	<artifactId>tests.core.configuration</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.configuration.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.configuration.ConfigurationTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
index 675fe41..11bf266 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index cd2b927..5b2494e 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ConfigurableCheckServiceProvider.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ConfigurableCheckServiceProvider.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ConfigurableCheckServiceProvider.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ConfigurableCheckServiceProvider.java
index 5ae13cb..c018a54 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ConfigurableCheckServiceProvider.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ConfigurableCheckServiceProvider.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
 
 public class ConfigurableCheckServiceProvider implements CheckService {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 97%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..32d2fd9 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
index 39f3918..6266e30 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 
 public class FooProviderTypeDyn implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
similarity index 100%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentConfigurableCheckServiceProvider.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentConfigurableCheckServiceProvider.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentConfigurableCheckServiceProvider.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentConfigurableCheckServiceProvider.java
index 304b83f..1dc7212 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentConfigurableCheckServiceProvider.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentConfigurableCheckServiceProvider.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
 
 public class ParentConfigurableCheckServiceProvider extends ParentClass implements CheckService {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java
similarity index 100%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java
index 204d1b4..b7fbb6c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java
@@ -22,7 +22,7 @@
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationException;
@@ -33,7 +33,7 @@
 	ComponentInstance instance;
 	
 	public void setUp() {
-		String type = "FooProviderType-3";
+		String type = "CONFIG-FooProviderType-3";
 		
 		Properties p1 = new Properties();
 		p1.put("name", "instance");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java
index 9576aad..0859ac1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java
@@ -23,7 +23,7 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.PrimitiveHandler;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationException;
@@ -41,7 +41,7 @@
 	ComponentInstance instance2;
 	
 	public void setUp() {
-	    String type = "FooProviderType-4";
+	    String type = "CONFIG-FooProviderType-4";
         Properties p = new Properties();
         p.put("name", "instance");
         p.put("foo", "foo");
@@ -50,7 +50,7 @@
         instance1 = Utils.getComponentInstance(context, type, p);
         assertEquals("instance1 created", ComponentInstance.VALID,instance1.getState());
         
-		type = "FooProviderType-3";
+		type = "CONFIG-FooProviderType-3";
 		Properties p1 = new Properties();
 		p1.put("name", "instance-2");
 		p1.put("foo", "foo");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java
index 318304e..33f47a7 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java
@@ -22,7 +22,7 @@
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -32,7 +32,7 @@
 	ComponentInstance fooProvider2;
 	
 	public void setUp() {
-		String type = "FooProviderType-Conf";
+		String type = "CONFIG-FooProviderType-Conf";
 		
 		Properties p1 = new Properties();
 		p1.put("name", "FooProvider-1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java
index 695d61e..7cfce8a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java
@@ -23,7 +23,7 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -33,7 +33,7 @@
 
     
     public void setUp() {
-        Factory fact = Utils.getFactoryByName(context, "BothConfigurableCheckService");
+        Factory fact = Utils.getFactoryByName(context, "CONFIG-BothConfigurableCheckService");
         Properties props = new Properties();
         props.put("name", "under-test");
         props.put("b", "1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java
index b49c823..a34051a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java
@@ -23,7 +23,7 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -32,7 +32,7 @@
     ComponentInstance instance;
     
     public void setUp() {
-        Factory fact = Utils.getFactoryByName(context, "FieldConfigurableCheckService");
+        Factory fact = Utils.getFactoryByName(context, "CONFIG-FieldConfigurableCheckService");
         Properties props = new Properties();
         props.put("name", "under-test");
         props.put("b", "1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestMethodProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestMethodProperties.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestMethodProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestMethodProperties.java
index 0c68867..b4e9afc 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestMethodProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestMethodProperties.java
@@ -23,7 +23,7 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -34,7 +34,7 @@
     ComponentInstance instance2;
 
     public void setUp() {
-        Factory fact = Utils.getFactoryByName(context, "MethodConfigurableCheckService");
+        Factory fact = Utils.getFactoryByName(context, "CONFIG-MethodConfigurableCheckService");
         Properties props = new Properties();
         props.put("name", "under-test");
         props.put("b", "1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestSuperMethodProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestSuperMethodProperties.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestSuperMethodProperties.java
rename to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestSuperMethodProperties.java
index c1c25d9..99c477a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestSuperMethodProperties.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestSuperMethodProperties.java
@@ -23,7 +23,7 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -32,7 +32,7 @@
     ComponentInstance instance;
 
     public void setUp() {
-        Factory fact = Utils.getFactoryByName(context, "ParentMethodConfigurableCheckService");
+        Factory fact = Utils.getFactoryByName(context, "CONFIG-ParentMethodConfigurableCheckService");
         Properties props = new Properties();
         props.put("name", "under-test");
         props.put("b", "1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/service/CheckService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/service/CheckService.java
index 62f254c..e8f89b9 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.configuration.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/service/FooService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/service/FooService.java
index 78693cf..7f6a005 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.configuration.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
copy to ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml b/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml
new file mode 100644
index 0000000..b389cd5
--- /dev/null
+++ b/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml
@@ -0,0 +1,148 @@
+<ipojo>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
+		factory="CONFIG-FooProviderType-Conf" architecture="true">
+		<provides />
+		<properties propagation="false">
+			<property name="int" field="intProp" value="2" />
+			<property name="boolean" field="boolProp" value="false" />
+			<property name="string" field="strProp" value="foo" />
+			<property name="strAProp" field="strAProp"
+				value="{foo, bar}" />
+			<property name="intAProp" field="intAProp" value="{1,2, 3}" />
+		</properties>
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="CONFIG-FooProviderType-3" architecture="true">
+		<provides>
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+			<property name="baz" type="java.lang.String" />
+		</provides>
+		<properties propagation="true">
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+		</properties>
+	</component>
+	<!-- Configuration Management Test -->
+	<component factory="CONFIG-FieldConfigurableCheckService"
+		className="org.apache.felix.ipojo.test.scenarios.component.ConfigurableCheckServiceProvider"
+		architecture="true">
+		<provides />
+		<properties propagation="true">
+			<property field="b" />
+			<property field="s" />
+			<property field="i" />
+			<property field="l" />
+			<property field="d" />
+			<property field="f" />
+			<property field="c" />
+			<property field="bool" />
+			<property field="bs" />
+			<property field="ss" />
+			<property field="is" />
+			<property field="ls" />
+			<property field="ds" />
+			<property field="fs" />
+			<property field="cs" />
+			<property field="bools" />
+			<property field="string" />
+			<property field="strings" />
+		</properties>
+	</component>
+
+	<component factory="CONFIG-BothConfigurableCheckService"
+		className="org.apache.felix.ipojo.test.scenarios.component.ConfigurableCheckServiceProvider"
+		architecture="true">
+		<provides />
+		<properties propagation="true">
+			<property field="b" method="updateB" />
+			<property field="s" method="updateS" />
+			<property field="i" method="updateI" />
+			<property field="l" method="updateL" />
+			<property field="d" method="updateD" />
+			<property field="f" method="updateF" />
+			<property field="c" method="updateC" />
+			<property field="bool" method="updateBool" />
+			<property field="bs" method="updateBs" />
+			<property field="ss" method="updateSs" />
+			<property field="is" method="updateIs" />
+			<property field="ls" method="updateLs" />
+			<property field="ds" method="updateDs" />
+			<property field="fs" method="updateFs" />
+			<property field="cs" method="updateCs" />
+			<property field="bools" method="updateBools" />
+			<property field="string" method="updateString" />
+			<property field="strings" method="updateStrings" />
+		</properties>
+	</component>
+
+	<component factory="CONFIG-MethodConfigurableCheckService"
+		className="org.apache.felix.ipojo.test.scenarios.component.ConfigurableCheckServiceProvider"
+		architecture="true">
+		<provides />
+		<properties propagation="true">
+			<property method="updateB" name="b" />
+			<property method="updateS" name="s" />
+			<property method="updateI" name="i" />
+			<property method="updateL" name="l" />
+			<property method="updateD" name="d" />
+			<property method="updateF" name="f" />
+			<property method="updateC" name="c" />
+			<property method="updateBool" name="bool" />
+			<property method="updateBs" name="bs" />
+			<property method="updateSs" name="ss" />
+			<property method="updateIs" name="is" />
+			<property method="updateLs" name="ls" />
+			<property method="updateDs" name="ds" />
+			<property method="updateFs" name="fs" />
+			<property method="updateCs" name="cs" />
+			<property method="updateBools" name="bools" />
+			<property method="updateString" name="string" />
+			<property method="updateStrings" name="strings" />
+		</properties>
+	</component>
+
+	<component factory="CONFIG-ParentMethodConfigurableCheckService"
+		className="org.apache.felix.ipojo.test.scenarios.component.ParentConfigurableCheckServiceProvider"
+		architecture="true">
+		<provides />
+		<properties propagation="true">
+			<property method="updateB" name="b" />
+			<property method="updateS" name="s" />
+			<property method="updateI" name="i" />
+			<property method="updateL" name="l" />
+			<property method="updateD" name="d" />
+			<property method="updateF" name="f" />
+			<property method="updateC" name="c" />
+			<property method="updateBool" name="bool" />
+			<property method="updateBs" name="bs" />
+			<property method="updateSs" name="ss" />
+			<property method="updateIs" name="is" />
+			<property method="updateLs" name="ls" />
+			<property method="updateDs" name="ds" />
+			<property method="updateFs" name="fs" />
+			<property method="updateCs" name="cs" />
+			<property method="updateBools" name="bools" />
+			<property method="updateString" name="string" type="string" />
+			<property method="updateStrings" name="strings"
+				type="java.lang.String[]" />
+		</properties>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="CONFIG-FooProviderType-4" architecture="true">
+		<provides>
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+			<property name="baz" type="java.lang.String" />
+		</provides>
+		<properties propagation="true" pid="FooProvider-3">
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+		</properties>
+	</component>
+	
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.external.handlers/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.external.handlers/pom.xml
index 4795777..803b9d9 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.external.handlers/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO External Handler Mechanism Test Suite</name>
+	<artifactId>tests.core.external.handlers</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.eh.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.eh.ExternalHandlerTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/handler/CheckServiceHandler.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/handler/CheckServiceHandler.java
rename to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
index b3ead6f..efd79d6 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/handler/CheckServiceHandler.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.handler;
+package org.apache.felix.ipojo.test.scenarios.component;
 
 import java.util.Dictionary;
 import java.util.Properties;
@@ -26,7 +26,7 @@
 import org.apache.felix.ipojo.architecture.HandlerDescription;
 import org.apache.felix.ipojo.architecture.PropertyDescription;
 import org.apache.felix.ipojo.metadata.Element;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.eh.service.CheckService;
 import org.osgi.framework.ServiceRegistration;
 
 public class CheckServiceHandler extends PrimitiveHandler implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/handler/CheckServiceHandlerDescription.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandlerDescription.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/handler/CheckServiceHandlerDescription.java
rename to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandlerDescription.java
index fb43042..ade2474 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/handler/CheckServiceHandlerDescription.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandlerDescription.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.handler;
+package org.apache.felix.ipojo.test.scenarios.component;
 
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.architecture.HandlerDescription;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 97%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..e7040e7 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.eh.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/ExternalHandlerTestSuite.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/ExternalHandlerTestSuite.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/ExternalHandlerTestSuite.java
rename to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/ExternalHandlerTestSuite.java
index f37d2ec..9965643 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/ExternalHandlerTestSuite.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/ExternalHandlerTestSuite.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.handler;
+package org.apache.felix.ipojo.test.scenarios.eh;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/HandlerTest.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java
rename to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/HandlerTest.java
index a9d2718..82c404a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/HandlerTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.handler;
+package org.apache.felix.ipojo.test.scenarios.eh;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.HandlerFactory;
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.eh.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -42,7 +42,7 @@
 		p.put("b", "b");
 		p.put("c", "c");
 		props.put("csh.map", p);
-		instance = Utils.getComponentInstance(context, "HandlerTester", props);
+		instance = Utils.getComponentInstance(context, "HANDLER-HandlerTester", props);
 	}
 	
 	public void tearDown() {
@@ -178,7 +178,7 @@
         p.put("b", "b");
         p.put("c", "c");
         props.put("csh.map", p);
-        instance = Utils.getComponentInstance(context, "HandlerTester", props);
+        instance = Utils.getComponentInstance(context, "HANDLER-HandlerTester", props);
         
         sr = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "HandlerTest-1");
         assertNotNull("Check the check service availability - 2", sr);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/service/CheckService.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/service/CheckService.java
index 62f254c..9239759 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.eh.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/service/FooService.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/service/FooService.java
index 78693cf..38d66ff 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/eh/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.eh.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
copy to ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.external.handlers/src/main/resources/metadata.xml b/ipojo/tests/tests.core.external.handlers/src/main/resources/metadata.xml
new file mode 100644
index 0000000..134c5a7
--- /dev/null
+++ b/ipojo/tests/tests.core.external.handlers/src/main/resources/metadata.xml
@@ -0,0 +1,24 @@
+<ipojo
+	xmlns:cs="org.apache.felix.ipojo.test.handler.checkservice">
+	<handler
+		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceHandler"
+		name="check"
+		namespace="org.apache.felix.ipojo.test.handler.checkservice"
+		architecture="false">
+		<controller field="isValid" />
+	</handler>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="HANDLER-HandlerTester" architecture="true">
+		<cs:check />
+	</component>
+	<instance name="HandlerTest-2" component="HANDLER-HandlerTester">
+		<property name="csh.simple" value="Simple" />
+		<property name="csh.map">
+			<property name="a" value="a" />
+			<property name="b" value="b" />
+			<property name="c" value="c" />
+		</property>
+	</instance>
+	
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.factories/pom.xml
similarity index 87%
rename from ipojo/tests/tests.core/pom.xml
rename to ipojo/tests/tests.core.factories/pom.xml
index 4795777..cb4ab55 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.factories/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Factories Test Suite</name>
+	<artifactId>tests.core.factories</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.factories.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.factories.FactoryTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
index 675fe41..7f7f37d 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index cd2b927..fdaf7c1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
similarity index 90%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
index 2b739b4..419da2e 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 
 public class FooBarProviderType1 implements FooService, BarService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..d1217a1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
index 39f3918..77a1583 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
@@ -20,7 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
+
 
 public class FooProviderTypeDyn implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
index f5f233a..8cc7d12 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 
 public class FooProviderTypeDyn2 implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/ComponentDesc.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ComponentDesc.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/ComponentDesc.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ComponentDesc.java
index ec4fef9..41dbcc2 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/ComponentDesc.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ComponentDesc.java
@@ -16,18 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.core;
+package org.apache.felix.ipojo.test.scenarios.factories;
 
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.architecture.ComponentTypeDescription;
 import org.apache.felix.ipojo.architecture.PropertyDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.metadata.Element;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Check component type description.
+ */
 public class ComponentDesc extends OSGiTestCase {
 	
 	ServiceReference sr_fooProvider1;
@@ -51,11 +54,11 @@
 //	Factory multiple_optional;
 	
 	public void setUp() {
-		sr_fooProvider1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-1");
-		sr_fooProvider2 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-2");
-		sr_fooProviderDyn2 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-Dyn2");
-		sr_fooProvider3 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-3");
-		sr_foobarProvider = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooBarProviderType-1");
+		sr_fooProvider1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooProviderType-1");
+		sr_fooProvider2 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooProviderType-2");
+		sr_fooProviderDyn2 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooProviderType-Dyn2");
+		sr_fooProvider3 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooProviderType-3");
+		sr_foobarProvider = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooBarProviderType-1");
 //		sr_simple = Utils.getServiceReferenceByName(context, Factory.class.getName(), "SimpleCheckServiceProvider");
 //		sr_optional = Utils.getServiceReferenceByName(context, Factory.class.getName(), "SimpleOptionalCheckServiceProvider");
 //		sr_multiple = Utils.getServiceReferenceByName(context, Factory.class.getName(), "SimpleMultipleCheckServiceProvider");
@@ -95,6 +98,9 @@
 //		context.ungetService(sr_multiple_optional);
 	}
 	
+	/**
+	 * Check simple providing.
+	 */
 	public void testFooProvider1() {
 		// Test SR properties
 //		String impl = (String) sr_fooProvider1.getProperty("component.class");
@@ -108,7 +114,7 @@
 		assertEquals("Check component.properties length", pd.length, 0);
 		
 		// Test factory
-		assertEquals("Check factory name", fooProvider1.getName(), "FooProviderType-1");
+		assertEquals("Check factory name", fooProvider1.getName(), "Factories-FooProviderType-1");
 		Element cd = fooProvider1.getDescription();
 		
 //		assertEquals("Check implementation class ", cd.getAttribute("implementation-class"), impl);
@@ -125,6 +131,9 @@
 		assertNotNull("check description equality", desc);
 	}
 	
+	/**
+	 * Check component properties.
+	 */
 	public void testFooProvider2() {
 		// Test SR properties
 //		String impl = (String) sr_fooProvider2.getProperty("component.class");
@@ -156,7 +165,7 @@
 		assertEquals("Check component.properties type [" + 4 + "]", "int[]", pd[4].getType());
 		
 		// Test factory
-		assertEquals("Check factory name", fooProvider2.getName(), "FooProviderType-2");
+		assertEquals("Check factory name", fooProvider2.getName(), "Factories-FooProviderType-2");
 		Element cd = fooProvider2.getDescription();
         
 //        assertEquals("Check implementation class ", cd.getAttribute("implementation-class"), impl);
@@ -191,6 +200,9 @@
         assertNotNull("check description equality", desc);
 	}
 	
+	/**
+	 * Check component properties (dynamic).
+	 */
 	public void testFooProviderDyn2() {
 		// Test SR properties
 //		String impl = (String) sr_fooProviderDyn2.getProperty("component.class");
@@ -220,7 +232,7 @@
 		assertEquals("Check component.properties type [" + 4 + "]", "int[]", pd[4].getType());
 		
 		// Test factory
-		assertEquals("Check factory name", fooProviderDyn2.getName(), "FooProviderType-Dyn2");
+		assertEquals("Check factory name", fooProviderDyn2.getName(), "Factories-FooProviderType-Dyn2");
 		Element cd = fooProviderDyn2.getDescription();
 		
 //        assertEquals("Check implementation class ", cd.getAttribute("implementation-class"), impl);
@@ -253,6 +265,9 @@
 		assertNotNull("check description equality", desc);
 	}
 	
+	/**
+	 * Check component properties.
+	 */
 	public void testFooProvider3() {
 		// Test SR properties
 //		String impl = (String) sr_fooProvider3.getProperty("component.class");
@@ -273,7 +288,7 @@
 		assertEquals("Check component.properties type [" + 2 + "]", "java.lang.String", pd[2].getType());
 		
 		// Test factory
-		assertEquals("Check factory name", fooProvider3.getName(), "FooProviderType-3");
+		assertEquals("Check factory name", fooProvider3.getName(), "Factories-FooProviderType-3");
 		Element cd = fooProvider3.getDescription();
         
 //		assertEquals("Check implementation class ", cd.getAttribute("implementation-class"), impl);
@@ -297,6 +312,9 @@
 		assertNotNull("check description equality", desc);
 	}
 	
+	/**
+	 * Test two services provider.
+	 */
 	public void testFooBar() {
 		//	Test SR properties
 //		String impl = (String) sr_foobarProvider.getProperty("component.class");
@@ -311,7 +329,7 @@
 		assertEquals("Check component.properties length", pd.length, 0);
 		
 		// Test factory
-		assertEquals("Check factory name", foobarProvider.getName(), "FooBarProviderType-1");
+		assertEquals("Check factory name", foobarProvider.getName(), "Factories-FooBarProviderType-1");
 		Element cd = foobarProvider.getDescription();
 		
 //        assertEquals("Check implementation class ", cd.getAttribute("implementation-class"), impl);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/ConfigAdminTest.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ConfigAdminTest.java
similarity index 87%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/ConfigAdminTest.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ConfigAdminTest.java
index 34f5b5d..3b6d440 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/ConfigAdminTest.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ConfigAdminTest.java
@@ -16,18 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.factory;
+package org.apache.felix.ipojo.test.scenarios.factories;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationException;
 import org.osgi.service.cm.ManagedServiceFactory;
 
+/**
+ * Check configuration admin reconfiguration.
+ */
 public class ConfigAdminTest extends OSGiTestCase {
 	
 	private ManagedServiceFactory getFactoryByName(String pid) {
@@ -42,8 +45,11 @@
 		}
 	}
 	
+	/**
+	 * Check creation.
+	 */
 	public void testCreation() {
-		ManagedServiceFactory f = getFactoryByName("FooProviderType-2");
+		ManagedServiceFactory f = getFactoryByName("Factories-FooProviderType-2");
 		
 		Properties  p = new Properties();
 		p.put("int", new Integer(3));
@@ -64,8 +70,11 @@
 		}
 	}
 	
+	/**
+	 * Check creation (push String).
+	 */
 	public void testCreationString() {
-        ManagedServiceFactory f = getFactoryByName("FooProviderType-2");
+        ManagedServiceFactory f = getFactoryByName("Factories-FooProviderType-2");
         
         Properties  p = new Properties();
         p.put("int", "3");
@@ -86,8 +95,11 @@
         }
     }
 	
+	/**
+	 * Check update and delete.
+	 */
 	public void testUpdate() {
-		ManagedServiceFactory f = getFactoryByName("FooProviderType-2");
+		ManagedServiceFactory f = getFactoryByName("Factories-FooProviderType-2");
 		
 		Properties  p = new Properties();
 		p.put("int", new Integer(3));
@@ -113,8 +125,12 @@
 		}
 	}
 
+    /**
+     * Check update and delete.
+     * (Push String).
+     */
     public void testUpdateString() {
-    	ManagedServiceFactory f = getFactoryByName("FooProviderType-2");
+    	ManagedServiceFactory f = getFactoryByName("Factories-FooProviderType-2");
     	
     	Properties  p = new Properties();
     	p.put("int", "3");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryProps.java
similarity index 89%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryProps.java
index 0be3205..d2604d0 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryProps.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.factories;
 
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.architecture.PropertyDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -36,7 +36,7 @@
 //	}
 	
 	public void testSimpleExposition() {
-		ServiceReference ref1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-1");
+		ServiceReference ref1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooProviderType-1");
 		assertNotNull("The factory is available", ref1);
 		String[] spec = (String[]) ref1.getProperty("component.providedServiceSpecifications");
 		assertEquals("Check array length", spec.length, 1);
@@ -44,7 +44,7 @@
 	}
 	
 	public void testDoubleExposition() {
-		ServiceReference ref1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooBarProviderType-1");
+		ServiceReference ref1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooBarProviderType-1");
 		assertNotNull("The factory is available", ref1);
 		String[] spec = (String[]) ref1.getProperty("component.providedServiceSpecifications");
 		assertEquals("Check array length", spec.length, 2);
@@ -53,7 +53,7 @@
 	}
 	
 	public void testProps() {
-		ServiceReference ref1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-Dyn2");
+		ServiceReference ref1 = Utils.getServiceReferenceByName(context, Factory.class.getName(), "Factories-FooProviderType-Dyn2");
 		assertNotNull("The factory is available", ref1);
 		PropertyDescription[] pd = (PropertyDescription[]) ref1.getProperty("component.properties");
 		assertEquals("Check property list size", pd.length, 5);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTestSuite.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java
similarity index 70%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTestSuite.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java
index 423088f..e34477a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTestSuite.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java
@@ -16,20 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.controller;
+package org.apache.felix.ipojo.test.scenarios.factories;
 
 import junit.framework.Test;
 
 import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
 import org.osgi.framework.BundleContext;
 
-public class LifeCycleControllerTestSuite {
-
+public class FactoryTestSuite {
 
     public static Test suite(BundleContext bc) {
-        OSGiTestSuite ots = new OSGiTestSuite("Lifecycle Controller Test Suite", bc);
-        ots.addTestSuite( LifeCycleControllerTest.class);
-        ots.addTestSuite( ImmediateLifeCycleControllerTest.class);
+        OSGiTestSuite ots = new OSGiTestSuite("Factories Test Suite", bc);
+        ots.addTestSuite(ComponentDesc.class);
+        ots.addTestSuite(UnacceptableConfigurationTest.class);
+        ots.addTestSuite(ConfigAdminTest.class);
+        ots.addTestSuite(ObedienceTest.class);
+        ots.addTestSuite(FactoryProps.class);
         return ots;
     }
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/ObedienceTest.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
similarity index 89%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/ObedienceTest.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
index da818e4..8ecdf56 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/ObedienceTest.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
@@ -16,21 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.factory;
+package org.apache.felix.ipojo.test.scenarios.factories;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentFactory;
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 
+/**
+ * Check that instances are disposed when the factory is stopped.
+ */
 public class ObedienceTest extends OSGiTestCase {
 
-	public void testObedience1() {
+	public void testObedience() {
 		assertNull("Check no foo service", context.getServiceReference(FooService.class.getName()));
-		ComponentFactory factory = (ComponentFactory) Utils.getFactoryByName(context, "FooProviderType-1");
+		ComponentFactory factory = (ComponentFactory) Utils.getFactoryByName(context, "Factories-FooProviderType-1");
 		assertNotNull("Check factory existing", factory);
 		
 		Properties props1 = new Properties();
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/UnacceptableConfigurationTest.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java
similarity index 80%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/UnacceptableConfigurationTest.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java
index 797b5db..b4f7aa0 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/UnacceptableConfigurationTest.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.factory;
+package org.apache.felix.ipojo.test.scenarios.factories;
 
 import java.util.Properties;
 
@@ -25,10 +25,16 @@
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 
+/**
+ * Test unacceptable configuration.
+ */
 public class UnacceptableConfigurationTest extends OSGiTestCase {
 
+	/**
+	 * Configuration without the name property.
+	 */
 	public void testWithoutName() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
 		
 		Properties  p = new Properties();
 		p.put("int", new Integer(3));
@@ -45,8 +51,11 @@
 		
 	}
 	
+	/**
+	 * Empty configuration.
+	 */
 	public void testEmptyConfiguration() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
 		Properties  p = new Properties();
 		
 		ComponentInstance ci = null;
@@ -56,8 +65,11 @@
 		} catch(Exception e) { fail("An acceptable configuration is refused"); }
 	}
 	
+	/**
+	 * Empty configuration (just the name).
+	 */
 	public void testEmptyConfiguration2() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		Properties  p = new Properties();
 		p.put("name", "ko");
 		ComponentInstance ci = null;
@@ -69,8 +81,11 @@
 		fail("An unacceptable configuration is accepted");
 	}
 	
+	/**
+	 * Null configuration (accept).
+	 */
 	public void testNull() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
 		
 		ComponentInstance ci = null;
 		try {
@@ -79,8 +94,11 @@
 		} catch(Exception e) { fail("An acceptable configuration is refused"); }
 	}
 	
+	/**
+	 * Null configuration (fail).
+	 */
 	public void testNull2() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		ComponentInstance ci = null;
 		try {
@@ -91,8 +109,11 @@
 		fail("An unacceptable configuration is accepted");
 	}
 	
+	/**
+	 * Check static properties.
+	 */
 	public void testStaticOK() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -111,8 +132,11 @@
 		}
 	}
 	
+	/**
+	 * Check dynamic properties.
+	 */
 	public void testDynamicOK() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -132,8 +156,11 @@
 		}
 	}
 	
+	/**
+	 * Check inconsistent types.
+	 */
 	public void testDynamicBadType() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -152,8 +179,11 @@
 		}
 	}
 	
+	/**
+	 * Check good configuration (with overriding).
+	 */
 	public void testDynamicComplete() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -172,8 +202,11 @@
 		}
 	}
 	
+	/**
+	 * Check good configuration.
+	 */
 	public void testDynamicJustEnough() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -190,8 +223,11 @@
 		}
 	}
 	
+	/**
+	 * Check good configuration.
+	 */
 	public void testDynamicMix() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -209,8 +245,11 @@
 		}
 	}
 	
+	/**
+	 * Check uncomplete configuration.
+	 */
 	public void testDynamicUncomplete() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -227,8 +266,11 @@
 		fail("An unacceptable configuration is accepted");
 	}
 	
+	/**
+	 * Check good configuration (more properties).
+	 */
 	public void testDynamicMore() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -248,8 +290,11 @@
 		}
 	}
 	
+	/**
+	 * Check properties affecting services and component.
+	 */
 	public void testDoubleProps() {
-		Factory f = Utils.getFactoryByName(context, "FooProviderType-Dyn2");
+		Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-Dyn2");
 		
 		Properties  p = new Properties();
 		p.put("name", "ok");
@@ -270,8 +315,11 @@
 		}
 	}
     
+    /**
+     * Check instance name unicity.
+     */
     public void testUnicity1() {
-        Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+        Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
         
         ComponentInstance ci1,ci2, ci3 = null;
         try {
@@ -287,8 +335,11 @@
         } catch(Exception e) { fail("An acceptable configuration is refused"); }
     }
     
+    /**
+     * Check instance name unicity.
+     */
     public void testUnicity2() {
-        Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+        Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
         
         ComponentInstance ci1,ci2, ci3 = null;
         try {
@@ -310,8 +361,11 @@
         } catch(Exception e) { fail("An acceptable configuration is refused"); }
     }
     
+    /**
+     * Check instance name unicity.
+     */
     public void testUnicity3() {
-        Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
+        Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
         
         ComponentInstance ci1 = null,ci2 = null, ci3 = null;
         try {
@@ -334,9 +388,12 @@
           fail("An unacceptable configuration is acceptable");
     }
     
+    /**
+     * Check instance name unicity.
+     */
     public void testUnicity4() {
-        Factory f = Utils.getFactoryByName(context, "FooProviderType-2");
-        Factory f2 = Utils.getFactoryByName(context, "FooProviderType-1");
+        Factory f = Utils.getFactoryByName(context, "Factories-FooProviderType-2");
+        Factory f2 = Utils.getFactoryByName(context, "Factories-FooProviderType-1");
         
         ComponentInstance ci1 = null,ci2 = null, ci3 = null;
         try {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/BarService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/BarService.java
index 727e845..e29c179 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/BarService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.factories.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/CheckService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/CheckService.java
index 62f254c..3fd1e2f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.factories.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/FooService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/FooService.java
index 78693cf..9ba67c9 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.factories.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
rename to ipojo/tests/tests.core.factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.factories/src/main/resources/metadata.xml b/ipojo/tests/tests.core.factories/src/main/resources/metadata.xml
new file mode 100644
index 0000000..2d10ac8
--- /dev/null
+++ b/ipojo/tests/tests.core.factories/src/main/resources/metadata.xml
@@ -0,0 +1,69 @@
+<ipojo>
+	<!-- Simple provider  -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Factories-FooProviderType-1" architecture="true">
+		<provides />
+	</component>
+	
+	<!-- Provider providing 2 services -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+		factory="Factories-FooBarProviderType-1" architecture="true">
+		<provides />
+	</component>
+	
+	<!-- Provider with dynamic property -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
+		name="Factories-FooProviderType-Dyn" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="2" />
+			<property name="boolean" field="boolProp" value="false" />
+			<property name="string" field="strProp" value="foo" />
+			<property name="strAProp" field="strAProp"
+				value="{foo, bar}" />
+			<property name="intAProp" field="intAProp" value="{ 1,2,3}" />
+		</provides>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		name="Factories-FooProviderType-2" architecture="true">
+		<provides>
+			<property name="int" type="int" value="2" />
+			<property name="long" type="long" value="40" />
+			<property name="string" type="java.lang.String" value="foo" />
+			<property name="strAProp" type="java.lang.String[]"
+				value="{foo, bar}" />
+			<property name="intAProp" type="int[]" value="{1,2,3}" />
+		</provides>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
+		name="Factories-FooProviderType-Dyn2" factory="true" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="4" />
+			<property name="boolean" field="boolProp" />
+			<property name="string" field="strProp" />
+			<property name="strAProp" field="strAProp" />
+			<property name="intAProp" field="intAProp"
+				value="{1, 2,3 }" />
+		</provides>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Factories-FooProviderType-3" architecture="true">
+		<provides>
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+			<property name="baz" type="java.lang.String" />
+		</provides>
+		<properties propagation="true">
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+		</properties>
+	</component>
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.lifecycle.callback/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.lifecycle.callback/pom.xml
index 4795777..ef77750 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.lifecycle.callback/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Lifecycle callback Test Suite</name>
+	<artifactId>tests.core.lifecycle.callback</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.lifecycle.callback.LifeCycleCallbackTest
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
similarity index 90%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
copy to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
index 76176c8..edffc63 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CallbackCheckService.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.FooService;
 
 public class CallbackCheckService extends ParentClass implements CheckService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..d4ad3bf 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
@@ -84,14 +84,6 @@
             a.charAt(0);
     }
     
-    private void nexttry(String  s) {
-        try {
-            s += "foo";
-        } catch(RuntimeException e) {
-            
-        }
-    }
-    
 	public boolean getBoolean() { return true; }
 
 	public double getDouble() { return 1.0; }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
copy to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/CallbackTestCase.java
similarity index 92%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java
rename to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/CallbackTestCase.java
index 019bec5..6f229e7 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/CallbackTestCase.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.lifecycle;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -36,12 +36,12 @@
 	public void setUp() {
 		Properties p2 = new Properties();
 		p2.put("name", "fooProvider");
-		fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+		fooProvider = Utils.getComponentInstance(context, "LFCB-FooProviderType-1", p2);
 		fooProvider.stop();
 		
 		Properties p1 = new Properties();
 		p1.put("name", "callback");
-		instance = Utils.getComponentInstance(context, "CallbackCheckService", p1);
+		instance = Utils.getComponentInstance(context, "LFCB-CallbackCheckService", p1);
 		
 	}
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackSeveralFactoryTest.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackSeveralFactoryTest.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackSeveralFactoryTest.java
rename to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackSeveralFactoryTest.java
index 19b7df9..0cfd554 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackSeveralFactoryTest.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackSeveralFactoryTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.lifecycle;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import java.util.Properties;
 
@@ -25,7 +25,7 @@
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -37,12 +37,12 @@
     public void setUp() {
         Properties p2 = new Properties();
         p2.put("name", "fooProvider");
-        fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+        fooProvider = Utils.getComponentInstance(context, "LFCB-FooProviderType-1", p2);
         fooProvider.stop();
         
         Properties p1 = new Properties();
         p1.put("name", "callback");
-        instance = Utils.getComponentInstance(context, "ImmediateCallbackCheckServiceSeveral", p1);
+        instance = Utils.getComponentInstance(context, "LFCB-ImmediateCallbackCheckServiceSeveral", p1);
         
     }
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackSingletonFactoryTest.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackSingletonFactoryTest.java
similarity index 92%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackSingletonFactoryTest.java
rename to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackSingletonFactoryTest.java
index a86911f..310d7ce 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackSingletonFactoryTest.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackSingletonFactoryTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.lifecycle;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import java.util.Properties;
 
@@ -25,7 +25,7 @@
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -37,12 +37,12 @@
     public void setUp() {
         Properties p2 = new Properties();
         p2.put("name", "fooProvider");
-        fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+        fooProvider = Utils.getComponentInstance(context, "LFCB-FooProviderType-1", p2);
         fooProvider.stop();
         
         Properties p1 = new Properties();
         p1.put("name", "callback");
-        instance = Utils.getComponentInstance(context, "ImmediateCallbackCheckServiceSingleton", p1);
+        instance = Utils.getComponentInstance(context, "LFCB-ImmediateCallbackCheckServiceSingleton", p1);
         
     }
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackTest.java
similarity index 92%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java
rename to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackTest.java
index dad0c1d..a8e1795 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateCallbackTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.lifecycle;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -36,12 +36,12 @@
     public void setUp() {
         Properties p2 = new Properties();
         p2.put("name", "fooProvider");
-        fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+        fooProvider = Utils.getComponentInstance(context, "LFCB-FooProviderType-1", p2);
         fooProvider.stop();
         
         Properties p1 = new Properties();
         p1.put("name", "callback");
-        instance = Utils.getComponentInstance(context, "ImmediateCallbackCheckService", p1);
+        instance = Utils.getComponentInstance(context, "LFCB-ImmediateCallbackCheckService", p1);
         
     }
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/ImmediateLifeCycleControllerTest.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateLifeCycleControllerTest.java
similarity index 91%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/ImmediateLifeCycleControllerTest.java
copy to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateLifeCycleControllerTest.java
index c5f5e20..fe53fb4 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/ImmediateLifeCycleControllerTest.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ImmediateLifeCycleControllerTest.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.controller;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -33,14 +33,14 @@
     private Factory factory;
     
     public void setUp() {
-        factory = Utils.getFactoryByName(context, "lcTest2");
+        factory = Utils.getFactoryByName(context, "LFC-Test-Immediate");
     }
     
     public void testOne() {
         Properties props = new Properties();
         props.put("conf", "foo");
         props.put("name", "under");
-        under = Utils.getComponentInstance(context, "lcTest2", props);
+        under = Utils.getComponentInstance(context, "LFC-Test-Immediate", props);
         
         // The conf is correct, the PS must be provided
         ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "under");
@@ -84,7 +84,7 @@
         Properties props = new Properties();
         props.put("conf", "bar");
         props.put("name", "under");
-        under = Utils.getComponentInstance(context, "lcTest2", props);    
+        under = Utils.getComponentInstance(context, "LFC-Test-Immediate", props);    
         
         assertEquals("check under state", under.getState(), ComponentInstance.INVALID);
         
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/LifeCycleCallbackTest.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java
rename to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/LifeCycleCallbackTest.java
index 69b171a..ed5a6bc 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/LifeCycleCallbackTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.lifecycle;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ParentCallbackTestCase.java
similarity index 91%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java
rename to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ParentCallbackTestCase.java
index 1f4901c..fef421b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/ParentCallbackTestCase.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.lifecycle;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -36,12 +36,12 @@
 	public void setUp() {
 		Properties p2 = new Properties();
 		p2.put("name", "fooProvider");
-		fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+		fooProvider = Utils.getComponentInstance(context, "LFCB-FooProviderType-1", p2);
 		fooProvider.stop();
 		
 		Properties p1 = new Properties();
 		p1.put("name", "callback");
-		instance = Utils.getComponentInstance(context, "ParentCallbackCheckService", p1);
+		instance = Utils.getComponentInstance(context, "LFCB-ParentCallbackCheckService", p1);
 		
 	}
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/service/CheckService.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/service/CheckService.java
index 62f254c..45684ab 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/service/FooService.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/service/FooService.java
index 78693cf..b1fdd34 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/callback/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.lifecycle.callback.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
new file mode 100644
index 0000000..7dbb8d0
--- /dev/null
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -0,0 +1,325 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.util;
+
+import java.util.Dictionary;
+import java.util.Properties;
+
+import junit.framework.Assert;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.Handler;
+import org.apache.felix.ipojo.HandlerFactory;
+import org.apache.felix.ipojo.ServiceContext;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ManagedServiceFactory;
+
+public class Utils {
+
+    public static Factory getFactoryByName(BundleContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name=" + factoryName + ")");
+            if (refs == null) {
+                System.err.println("Cannot get the factory " + factoryName);
+                return null;
+            }
+            return ((Factory) bc.getService(refs[0]));
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static HandlerFactory getHandlerFactoryByName(BundleContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(" + Handler.HANDLER_NAME_PROPERTY + "=" + factoryName + ")");
+            if (refs == null) {
+                System.err.println("Cannot get the factory " + factoryName);
+                return null;
+            }
+            return (HandlerFactory) bc.getService(refs[0]);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static ComponentInstance getComponentInstance(BundleContext bc, String factoryName, Dictionary configuration) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) {
+            System.err.println("Factory " + factoryName + " not found");
+            return null;
+        }
+
+        // if(fact.isAcceptable(configuration)) {
+        try {
+            return fact.createComponentInstance(configuration);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail("Cannot create the instance from " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+        // }
+        // else {
+        // System.err.println("Configuration not accepted by : " + factoryName);
+        // return null;
+        // }
+    }
+
+    public static ComponentInstance getComponentInstanceByName(BundleContext bc, String factoryName, String name) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) {
+            System.err.println("Factory " + factoryName + " not found");
+            return null;
+        }
+
+        try {
+            Properties props = new Properties();
+            props.put("name", name);
+            return fact.createComponentInstance(props);
+        } catch (Exception e) {
+            System.err.println("Cannot create the instance from " + factoryName + " : " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static ServiceReference[] getServiceReferences(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return new ServiceReference[0];
+        } else {
+            return refs;
+        }
+    }
+
+    public static ServiceReference getServiceReference(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static ServiceReference getServiceReferenceByName(BundleContext bc, String itf, String name) {
+        ServiceReference[] refs = null;
+        String filter = null;
+        if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
+            filter = "(" + "factory.name" + "=" + name + ")";
+        } else {
+            filter = "(" + "instance.name" + "=" + name + ")";
+        }
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+    
+    public static ServiceReference getServiceReferenceByPID(BundleContext bc, String itf, String pid) {
+        ServiceReference[] refs = null;
+        String filter = "(" + "service.pid" + "=" + pid + ")";
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else if (refs.length == 1) {
+            return refs[0];
+        } else {
+            Assert.fail("A service lookup by PID returned several providers (" + refs.length + ")" + " for " + itf + " with " + pid);
+            return null;
+        }
+    }
+
+    public static Object getServiceObject(BundleContext bc, String itf, String filter) {
+        ServiceReference ref = getServiceReference(bc, itf, filter);
+        if (ref != null) {
+            return bc.getService(ref);
+        } else {
+            return null;
+        }
+    }
+
+    public static Object[] getServiceObjects(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = getServiceReferences(bc, itf, filter);
+        if (refs != null) {
+            Object[] list = new Object[refs.length];
+            for (int i = 0; i < refs.length; i++) {
+                list[i] = bc.getService(refs[i]);
+            }
+            return list;
+        } else {
+            return new Object[0];
+        }
+    }
+
+//    public static ServiceContext getServiceContext(ComponentInstance ci) {
+//        if (ci instanceof CompositeManager) {
+//            return ((CompositeManager) ci).getServiceContext();
+//        } else {
+//            throw new RuntimeException("Cannot get the service context form an non composite instance");
+//        }
+//    }
+
+    public static Factory getFactoryByName(ServiceContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name=" + factoryName + ")");
+            if (refs == null) { return null; }
+            return ((Factory) bc.getService(refs[0]));
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static ComponentInstance getComponentInstance(ServiceContext bc, String factoryName, Dictionary configuration) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) { return null; }
+
+        if (fact.isAcceptable(configuration)) {
+            try {
+                return fact.createComponentInstance(configuration);
+            } catch (Exception e) {
+                System.err.println(e.getMessage());
+                e.printStackTrace();
+                return null;
+            }
+        } else {
+            System.err.println("Configuration not accepted by : " + factoryName);
+            return null;
+        }
+    }
+
+    public static ServiceReference[] getServiceReferences(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return new ServiceReference[0];
+        } else {
+            return refs;
+        }
+    }
+
+    public static ServiceReference getServiceReference(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static ServiceReference getServiceReferenceByName(ServiceContext bc, String itf, String name) {
+        ServiceReference[] refs = null;
+        String filter = null;
+        if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
+            filter = "(" + "factory.name" + "=" + name + ")";
+        } else {
+            filter = "(" + "instance.name" + "=" + name + ")";
+        }
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static Object getServiceObject(ServiceContext bc, String itf, String filter) {
+        ServiceReference ref = getServiceReference(bc, itf, filter);
+        if (ref != null) {
+            return bc.getService(ref);
+        } else {
+            return null;
+        }
+    }
+
+    public static Object[] getServiceObjects(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = getServiceReferences(bc, itf, filter);
+        if (refs != null) {
+            Object[] list = new Object[refs.length];
+            for (int i = 0; i < refs.length; i++) {
+                list[i] = bc.getService(refs[i]);
+            }
+            return list;
+        } else {
+            return new Object[0];
+        }
+    }
+    
+    public static boolean contains(String string, String[] array) {
+        for (int i = 0; array != null && i < array.length; i++) {
+            if (array[i] != null  && array[i].equals(string)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    public static boolean contains(int value, int[] array) {
+        for (int i = 0; array != null && i < array.length; i++) {
+            if (array[i] == value) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}
diff --git a/ipojo/tests/tests.core.lifecycle.callback/src/main/resources/metadata.xml b/ipojo/tests/tests.core.lifecycle.callback/src/main/resources/metadata.xml
new file mode 100644
index 0000000..c60c239
--- /dev/null
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/resources/metadata.xml
@@ -0,0 +1,52 @@
+<ipojo>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="LFCB-FooProviderType-1" architecture="true">
+		<provides />
+	</component>
+	
+	<!-- Lifecycle Callback -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
+		factory="LFCB-CallbackCheckService" architecture="true">
+		<requires field="fs" />
+		<provides />
+		<callback transition="validate" method="start" />
+		<callback transition="invalidate" method="stop" />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
+		factory="LFCB-ParentCallbackCheckService" architecture="true">
+		<requires field="fs" />
+		<provides />
+		<callback transition="validate" method="parentStart" />
+		<callback transition="invalidate" method="parentStop" />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
+		immediate="true" factory="LFCB-ImmediateCallbackCheckService"
+		architecture="true">
+		<requires field="fs" />
+		<provides />
+		<callback transition="validate" method="start" />
+		<callback transition="invalidate" method="stop" />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
+		immediate="true" factory="LFCB-ImmediateCallbackCheckServiceSingleton"
+		factory-method="singleton" architecture="true">
+		<requires field="fs" />
+		<provides />
+		<callback transition="validate" method="start" />
+		<callback transition="invalidate" method="stop" />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
+		immediate="true" factory="LFCB-ImmediateCallbackCheckServiceSeveral"
+		factory-method="several" architecture="true">
+		<requires field="fs" />
+		<provides />
+		<callback transition="validate" method="start" />
+		<callback transition="invalidate" method="stop" />
+	</component>
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.lifecycle.controller/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.lifecycle.controller/pom.xml
index 4795777..386b5e0 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.lifecycle.controller/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Lifecycle controller Test Suite</name>
+	<artifactId>tests.core.lifecycle.controller</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.lfc.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.lfc.LifeCycleControllerTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
copy to ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
index c69bad5..9027ed1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
+++ b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/component/LifecycleControllerTest.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lfc.service.CheckService;
 
 public class LifecycleControllerTest implements CheckService {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/ImmediateLifeCycleControllerTest.java b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/ImmediateLifeCycleControllerTest.java
similarity index 91%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/ImmediateLifeCycleControllerTest.java
rename to ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/ImmediateLifeCycleControllerTest.java
index c5f5e20..9a27445 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/ImmediateLifeCycleControllerTest.java
+++ b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/ImmediateLifeCycleControllerTest.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.controller;
+package org.apache.felix.ipojo.test.scenarios.lfc;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lfc.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -33,14 +33,14 @@
     private Factory factory;
     
     public void setUp() {
-        factory = Utils.getFactoryByName(context, "lcTest2");
+        factory = Utils.getFactoryByName(context, "LFC-Test-Immediate");
     }
     
     public void testOne() {
         Properties props = new Properties();
         props.put("conf", "foo");
         props.put("name", "under");
-        under = Utils.getComponentInstance(context, "lcTest2", props);
+        under = Utils.getComponentInstance(context, "LFC-Test-Immediate", props);
         
         // The conf is correct, the PS must be provided
         ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "under");
@@ -84,7 +84,7 @@
         Properties props = new Properties();
         props.put("conf", "bar");
         props.put("name", "under");
-        under = Utils.getComponentInstance(context, "lcTest2", props);    
+        under = Utils.getComponentInstance(context, "LFC-Test-Immediate", props);    
         
         assertEquals("check under state", under.getState(), ComponentInstance.INVALID);
         
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTest.java b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/LifeCycleControllerTest.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTest.java
rename to ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/LifeCycleControllerTest.java
index d86b997..d9cc88f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTest.java
+++ b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/LifeCycleControllerTest.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.controller;
+package org.apache.felix.ipojo.test.scenarios.lfc;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.lfc.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -38,14 +38,14 @@
     private Factory factory;
 
     public void setUp() {
-        factory = Utils.getFactoryByName(context, "lcTest");
+        factory = Utils.getFactoryByName(context, "LFC-Test");
     }
 
     public void testOne() {
         Properties props = new Properties();
         props.put("conf", "foo");
         props.put("name", "under");
-        under = Utils.getComponentInstance(context, "lcTest", props);
+        under = Utils.getComponentInstance(context, "LFC-Test", props);
 
         // The conf is correct, the PS must be provided
         ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "under");
@@ -93,7 +93,7 @@
         Properties props = new Properties();
         props.put("conf", "bar");
         props.put("name", "under");
-        under = Utils.getComponentInstance(context, "lcTest", props);
+        under = Utils.getComponentInstance(context, "LFC-Test", props);
 
         // The conf is incorrect, but the test can appears only when the object is created : the PS must be provided
         ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "under");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTestSuite.java b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/LifeCycleControllerTestSuite.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTestSuite.java
rename to ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/LifeCycleControllerTestSuite.java
index 423088f..9ed3bd8 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/controller/LifeCycleControllerTestSuite.java
+++ b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/LifeCycleControllerTestSuite.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.controller;
+package org.apache.felix.ipojo.test.scenarios.lfc;
 
 import junit.framework.Test;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/service/CheckService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/service/CheckService.java
index 62f254c..3741060 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/lfc/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.lfc.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
copy to ipojo/tests/tests.core.lifecycle.controller/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.lifecycle.controller/src/main/resources/metadata.xml b/ipojo/tests/tests.core.lifecycle.controller/src/main/resources/metadata.xml
new file mode 100644
index 0000000..e7ffacb
--- /dev/null
+++ b/ipojo/tests/tests.core.lifecycle.controller/src/main/resources/metadata.xml
@@ -0,0 +1,21 @@
+<ipojo>
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"
+		name="LFC-Test">
+		<provides />
+		<controller field="m_state" />
+		<properties>
+			<property name="conf" field="m_conf" method="setConf" />
+		</properties>
+	</component>
+
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"
+		name="LFC-Test-Immediate" immediate="true" architecture="true">
+		<provides />
+		<controller field="m_state" />
+		<properties>
+			<property name="conf" field="m_conf" method="setConf" />
+		</properties>
+	</component>
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.manipulation/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.manipulation/pom.xml
index 4795777..6b88d30 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.manipulation/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Manipulation Test Suite</name>
+	<artifactId>tests.core.manipulation</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.manipulation.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.manipulation.ManipulationTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/Manipulation23Tester.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/Manipulation23Tester.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/Manipulation23Tester.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/Manipulation23Tester.java
index fe17b96..019980f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/Manipulation23Tester.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/Manipulation23Tester.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component.A123;
 
-import org.apache.felix.ipojo.test.scenarios.service.PrimitiveManipulationTestService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.PrimitiveManipulationTestService;
 
 
 public class Manipulation23Tester implements PrimitiveManipulationTestService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
index 675fe41..b7ec87c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index cd2b927..5164e04 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
similarity index 89%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
index 2b739b4..e49ede4 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 
 public class FooBarProviderType1 implements FooService, BarService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 97%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..eec3052 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
index 39f3918..d5a9c87 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 
 public class FooProviderTypeDyn implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Manipulation23Tester.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Manipulation23Tester.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Manipulation23Tester.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Manipulation23Tester.java
index deff64e..fb273c5 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Manipulation23Tester.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Manipulation23Tester.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.PrimitiveManipulationTestService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.PrimitiveManipulationTestService;
 
 
 public class Manipulation23Tester implements PrimitiveManipulationTestService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
index efbc972..79dc2ef 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class MultipleCheckService implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
similarity index 89%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
index 975e2a6..898e83e 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
@@ -24,11 +24,14 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.test.scenarios.component.FooProviderType1;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Test execption handling. POJO exception must be propagated.
+ */
 public class ExceptionTest extends OSGiTestCase {
 	
 	private ComponentInstance ci_lazzy;
@@ -38,14 +41,14 @@
 	private ServiceReference immRef;	
 
 	public void setUp() {
-		String factName = "FooProviderType-1";
+		String factName = "Manipulation-FooProviderType-1";
 		String compName = "FooProvider-1";
 		
 		Properties p = new Properties();
 		p.put("name", compName);
 		ci_lazzy = Utils.getComponentInstance(context, factName, p);
 		
-		String factName2 = "ImmediateFooProviderType";
+		String factName2 = "Manipulation-ImmediateFooProviderType";
 		String compName2 = "FooProvider-2";
 		
 		Properties p2 = new Properties();
@@ -66,6 +69,9 @@
 	}
 	
     
+    /**
+     * Check that the exception is correctly propagated.
+     */
     public void testException() {
         ServiceReference[] refs = null;
         try {
@@ -82,6 +88,9 @@
         }
     }
     
+    /**
+     * Check that the exception is correctly catch by the POJO.
+     */
     public void testTry() {
         ServiceReference[] refs = null;
         try {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java
similarity index 89%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java
index e82a011..6567fad 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java
@@ -25,19 +25,26 @@
 import org.apache.felix.ipojo.Pojo;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Check the getComponentInstance method on a POJO
+ */
 public class GetComponentInstanceTest extends OSGiTestCase {
-
+    
+	/**
+	 * Check if a pojo can correctly be cast in POJO.
+	 * Check the getComponentInstance method. 
+	 */
 	public void testGetComponentInstance() {
-		String factName = "FooProviderType-1";
+		String factName = "Manipulation-FooProviderType-1";
 		String compName = "FooProvider-1";
 		ServiceReference[] refs = null;
 		
-		// Get the facotry to create a component instance
+		// Get the factory to create a component instance
 		Factory fact = Utils.getFactoryByName(context, factName);
 		assertNotNull("Cannot find the factory FooProvider-1", fact);
 		
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java
similarity index 91%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java
index 69c788e..0276e2f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java
@@ -23,28 +23,31 @@
 import org.apache.felix.ipojo.parser.ManifestMetadataParser;
 import org.apache.felix.ipojo.parser.ParseException;
 import org.apache.felix.ipojo.parser.ParseUtils;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 
+/**
+ * Check manipulation metadata written in the manifest.
+ */
 public class ManipulationMetadata extends OSGiTestCase {
 
 	public void testGetMetadata() {
 		String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
 		Element elem = null;
 		try {
-			elem = ManifestMetadataParser.parse(header);
+			elem = ManifestMetadataParser.parseHeaderMetadata(header);
 		} catch (ParseException e) {
 			fail("Parse Exception when parsing iPOJO-Component");
 		}
 		
 		assertNotNull("Check elem not null", elem);
 		
-		Element manip = getManipulationForComponent(elem, "FooProviderType-1");
+		Element manip = getManipulationForComponent(elem, "Manipulation-FooProviderType-1");
 		assertNotNull("Check manipulation metadata not null for " + "FooProviderType-1", manip);
 	}
 	
 	public void testInterface() {
-		String comp_name = "FooProviderType-1";
+		String comp_name = "Manipulation-FooProviderType-1";
 		Element manip = getManipulationForComponent(comp_name);
 		Element[] itf = manip.getElements("Interface");
 		assertEquals("Check interfaces number", itf.length, 1);
@@ -52,7 +55,7 @@
 	}
 	
 	public void testInterfaces() {
-		String comp_name = "FooBarProviderType-1";
+		String comp_name = "Manipulation-FooBarProviderType-1";
 		Element manip = getManipulationForComponent(comp_name);
 		Element[] itf = manip.getElements("Interface");
 		assertEquals("Check interfaces number", itf.length, 2);
@@ -61,7 +64,7 @@
 	}
 	
 	public void testFields() {
-		String comp_name = "FooProviderType-Dyn";
+		String comp_name = "Manipulation-FooProviderType-Dyn";
 		Element manip = getManipulationForComponent(comp_name);
 		Element[] fields = manip.getElements("field");
 		assertEquals("Check field count " + fields.length, fields.length, 5);
@@ -97,7 +100,7 @@
 	}
 	
 	public void testPrimitivesFields() {
-		String comp_name = "PrimitiveManipulationTester";
+		String comp_name = "Manipulation-PrimitiveManipulationTester";
 		Element manip = getManipulationForComponent(comp_name);
 		Element[] fields = manip.getElements("Field");
 		assertEquals("Check field count", fields.length, 16);
@@ -157,7 +160,7 @@
 	}
 	
 	public void testNoArgMethod() {
-		String comp_name = "SimpleMultipleCheckServiceProvider";
+		String comp_name = "Manipulation-SimpleMultipleCheckServiceProvider";
 		Element manip = getManipulationForComponent(comp_name);
 		Element method = getMethodFromName(manip, "check");
 		assertFalse("Check no args", method.containsAttribute("arguments"));
@@ -165,7 +168,7 @@
 	}
 	
 	public void testOneArgsMethod() {
-		String comp_name = "SimpleMultipleCheckServiceProvider";
+		String comp_name = "Manipulation-SimpleMultipleCheckServiceProvider";
 		Element manip = getManipulationForComponent(comp_name);
 		Element method = getMethodFromName(manip, "refBind");
 		assertEquals("Check args", method.getAttribute("arguments"), "{org.osgi.framework.ServiceReference}");
@@ -174,7 +177,7 @@
 	}
 	
 	public void testTwoArgsMethod() {
-		String comp_name = "SimpleMultipleCheckServiceProvider";
+		String comp_name = "Manipulation-SimpleMultipleCheckServiceProvider";
 		Element manip = getManipulationForComponent(comp_name);
 		Element method = getMethodFromName(manip, "doNothing");
 		assertEquals("Check args", method.getAttribute("arguments"), "{java.lang.Object,java.lang.String}");
@@ -199,13 +202,12 @@
 		String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
 		Element elem = null;
 		try {
-			elem = ManifestMetadataParser.parse(header);
+			elem = ManifestMetadataParser.parseHeaderMetadata(header);
 		} catch (ParseException e) {
 			fail("Parse Exception when parsing iPOJO-Component");
 		}
 		
-		assertNotNull("Check elem not null", elem);
-		
+		assertNotNull("Check elem not null", elem);		
 		Element manip = getManipulationForComponent(elem, comp_name);
 		assertNotNull("Check manipulation metadata not null for " + comp_name, manip);
 		return manip;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java
index 598267e..5006f0c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java
@@ -25,27 +25,27 @@
 import org.apache.felix.ipojo.parser.MethodMetadata;
 import org.apache.felix.ipojo.parser.ParseException;
 import org.apache.felix.ipojo.parser.PojoMetadata;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 
 public class ManipulationMetadataAPI extends OSGiTestCase {
     
     PojoMetadata FooProviderType1, FooBarProviderType1, FooProviderTypeDyn, PrimitiveManipulationTester, SimpleMultipleCheckServiceProvider;
 
 	public void setUp() {
-        String comp_name = "FooProviderType-1";
+        String comp_name = "Manipulation-FooProviderType-1";
         FooProviderType1 = getManipulationMetadataForComponent(comp_name);
         
-        comp_name = "FooBarProviderType-1";
+        comp_name = "Manipulation-FooBarProviderType-1";
         FooBarProviderType1 = getManipulationMetadataForComponent(comp_name);
         
-        comp_name = "FooProviderType-Dyn";
+        comp_name = "Manipulation-FooProviderType-Dyn";
         FooProviderTypeDyn = getManipulationMetadataForComponent(comp_name);
         
-        comp_name = "PrimitiveManipulationTester";
+        comp_name = "Manipulation-PrimitiveManipulationTester";
         PrimitiveManipulationTester = getManipulationMetadataForComponent(comp_name);
         
-        comp_name = "SimpleMultipleCheckServiceProvider";
+        comp_name = "Manipulation-SimpleMultipleCheckServiceProvider";
         SimpleMultipleCheckServiceProvider = getManipulationMetadataForComponent(comp_name);
 	}
 	
@@ -53,15 +53,15 @@
 		String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
 		Element elem = null;
 		try {
-			elem = ManifestMetadataParser.parse(header);
+			elem = ManifestMetadataParser.parseHeaderMetadata(header);
 		} catch (ParseException e) {
 			fail("Parse Exception when parsing iPOJO-Component");
 		}
 		
 		assertNotNull("Check elem not null", elem);
 		
-		Element manip = getMetadataForComponent(elem, "FooProviderType-1");
-        assertNotNull("Check manipulation metadata not null for " + "FooProviderType-1", manip);
+		Element manip = getMetadataForComponent(elem, "Manipulation-FooProviderType-1");
+        assertNotNull("Check manipulation metadata not null for " + "Manipulation-FooProviderType-1", manip);
         PojoMetadata mm = new PojoMetadata(manip);
         assertNotNull("Check mm not null", mm);
 	}
@@ -263,7 +263,7 @@
         String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
         Element elem = null;
         try {
-            elem = ManifestMetadataParser.parse(header);
+            elem = ManifestMetadataParser.parseHeaderMetadata(header);
         } catch (ParseException e) {
             fail("Parse Exception when parsing iPOJO-Component");
         }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java
index 7bae413..ef634e0 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java
@@ -33,6 +33,7 @@
 		ots.addTestSuite(GetComponentInstanceTest.class);
         ots.addTestSuite(ManipulationMetadataAPI.class);
         ots.addTestSuite(ExceptionTest.class);
+        ots.addTestSuite(POJOCreation.class);
 		return ots;
 	}
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/POJOCreation.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java
similarity index 91%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/POJOCreation.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java
index 7c76bbf..1a7766d 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/POJOCreation.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.core;
+package org.apache.felix.ipojo.test.scenarios.manipulation;
 
 import java.util.Properties;
 
@@ -24,11 +24,14 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.test.scenarios.component.FooProviderType1;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Check the different method to create POJO object.
+ */
 public class POJOCreation extends OSGiTestCase {
 	
 	private ComponentInstance ci_lazzy;
@@ -56,43 +59,43 @@
     private Architecture lazzyArchSevM;
 	
 	public void setUp() {
-		String factName = "FooProviderType-1";
+		String factName = "Manipulation-FooProviderType-1";
 		String compName = "FooProvider-1";
 		Properties p = new Properties();
 		p.put("name", compName);
 		ci_lazzy = Utils.getComponentInstance(context, factName ,p);
 		
-		String factName2 = "ImmediateFooProviderType";
+		String factName2 = "Manipulation-ImmediateFooProviderType";
 		String compName2 = "FooProvider-2";
 		Properties p2 = new Properties();
 		p2.put("name", compName2);
 		ci_immediate = Utils.getComponentInstance(context, factName2, p2);
 		
-		String factName3 = "ImmediateFooProviderTypeSingleton";
+		String factName3 = "Manipulation-ImmediateFooProviderTypeSingleton";
         String compName3 = "FooProvider-3";
         Properties p3 = new Properties();
         p3.put("name", compName3);
         ci_immediate_singleton = Utils.getComponentInstance(context, factName3, p3);
         
-        String factName4 = "FooProviderType-1-Sing";
+        String factName4 = "Manipulation-FooProviderType-1-Sing";
         String compName4 = "FooProvider-1-Sing";
         Properties p4 = new Properties();
         p4.put("name", compName4);
         ci_lazzy_sing = Utils.getComponentInstance(context, factName4 ,p4);
         
-        String factName5 = "FooProviderType-1-Sev";
+        String factName5 = "Manipulation-FooProviderType-1-Sev";
         String compName5 = "FooProvider-1-Sev";
         Properties p5 = new Properties();
         p5.put("name", compName5);
         ci_lazzy_sev = Utils.getComponentInstance(context, factName5 ,p5);
         
-        String factName6 = "FooProviderType-1-SingM";
+        String factName6 = "Manipulation-FooProviderType-1-SingM";
         String compName6 = "FooProvider-1-SingM";
         Properties p6 = new Properties();
         p6.put("name", compName6);
         ci_lazzy_singM = Utils.getComponentInstance(context, factName6 ,p6);
         
-        String factName7 = "FooProviderType-1-SevM";
+        String factName7 = "Manipulation-FooProviderType-1-SevM";
         String compName7 = "FooProvider-1-SevM";
         Properties p7 = new Properties();
         p7.put("name", compName7);
@@ -139,6 +142,9 @@
         ci_lazzy_sevM.dispose();
 	}
 	
+	/**
+	 * Check lazy creation.
+	 */
 	public void testLazyCreation() {
 		assertEquals("Check that no objects are created ", 0, lazzyArch.getInstanceDescription().getCreatedObjects().length);
 		ServiceReference[] refs = null;
@@ -152,6 +158,9 @@
 		context.ungetService(refs[0]);
 	}
 	
+	/**
+	 * Check lazy and singleton creation.
+	 */
 	public void testLazyCreationSingleton() {
         assertEquals("Check that no objects are created ", 0, lazzyArchSing.getInstanceDescription().getCreatedObjects().length);
         ServiceReference[] refs = null;
@@ -165,6 +174,9 @@
         context.ungetService(refs[0]);
     }
 	
+	/**
+	 * Check lazy and "several" creation.
+	 */
 	public void testLazyCreationSeveral() {
         assertEquals("Check that no objects are created ", 0, lazzyArchSev.getInstanceDescription().getCreatedObjects().length);
         ServiceReference[] refs = null;
@@ -180,6 +192,9 @@
         context.ungetService(refs[0]);
     }
 	
+	/**
+	 * Check immediate creation.
+	 */
 	public void testImmediateCreation() {
 		assertEquals("Check that one object is created ", 1, immeArch.getInstanceDescription().getCreatedObjects().length);
 		ServiceReference[] refs = null;
@@ -193,6 +208,9 @@
 		context.ungetService(refs[0]);
 	}
     
+    /**
+     * Check bundle context injection.
+     */
     public void testBundleContext() {
         ServiceReference[] refs = null;
         try {
@@ -206,6 +224,9 @@
         context.ungetService(refs[0]);
     }
 
+    /**
+     * Test immediate singleton creation.
+     */
     public void testImmediateSingletonCreation() {
     	assertEquals("Check that one object is created ", 1, immeArchSing.getInstanceDescription().getCreatedObjects().length);
     	ServiceReference[] refs = null;
@@ -219,6 +240,10 @@
     	context.ungetService(refs[0]);
     }
 
+    /**
+     * Check creation through a factory method.
+     * (lazy & singleton creation)
+     */
     public void testLazyCreationSingletonM() {
         assertEquals("Check that no objects are created ", 0, lazzyArchSingM.getInstanceDescription().getCreatedObjects().length);
         ServiceReference[] refs = null;
@@ -234,6 +259,10 @@
         context.ungetService(refs[0]);
     }
 
+    /**
+     * Check creation through a factory method.
+     * (lazy & several creation)
+     */
     public void testLazyCreationSeveralM() {
         assertEquals("Check that no objects are created ", 0, lazzyArchSevM.getInstanceDescription().getCreatedObjects().length);
         ServiceReference[] refs = null;
@@ -251,6 +280,10 @@
         context.ungetService(refs[0]);
     }
     
+    /**
+     * Test a custom constructor.
+     * Not manipulated.
+     */
     public void testCustomConstuctor() {
         FooService fs = new FooProviderType1(0, "foo", context);
         Properties props = fs.fooProps();
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java
similarity index 91%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java
index defd46e..b1c22ee 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java
@@ -22,10 +22,13 @@
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.PrimitiveManipulationTestService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.PrimitiveManipulationTestService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Check the manipulation of primitive type (boxed and unboxed).
+ */
 public class PrimitiveTypeTest extends OSGiTestCase {
 
 	ComponentInstance instance; // Instance under test
@@ -35,7 +38,7 @@
 	public void setUp() {
 		Properties p1 = new Properties();
 		p1.put("name", "primitives");
-		instance = Utils.getComponentInstance(context, "PrimitiveManipulationTester", p1);
+		instance = Utils.getComponentInstance(context, "Manipulation-PrimitiveManipulationTester", p1);
 		assertTrue("check instance state", instance.getState() == ComponentInstance.VALID);
 		prim_ref = Utils.getServiceReferenceByName(context, PrimitiveManipulationTestService.class.getName(), instance.getInstanceName());
 		assertNotNull("Check prim availability", prim_ref);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java
similarity index 80%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java
index a3e7dd3..d69a1fc 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java
@@ -22,10 +22,14 @@
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.PrimitiveManipulationTestService;
+import org.apache.felix.ipojo.test.scenarios.manipulation.service.PrimitiveManipulationTestService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Check the manipulation of primitive type (boxed and unboxed).
+ * The targeted implementation contains numbers.
+ */
 public class PrimitiveTypeTest2 extends OSGiTestCase {
 
     ComponentInstance instance; // Instance under test
@@ -37,7 +41,7 @@
     public void setUp() {
         Properties p1 = new Properties();
         p1.put("name", "primitives");
-        instance = Utils.getComponentInstance(context, "PrimitiveManipulationTesterA", p1);
+        instance = Utils.getComponentInstance(context, "Manipulation-PrimitiveManipulationTesterA", p1);
         assertTrue("check instance state", instance.getState() == ComponentInstance.VALID);
         prim_ref = Utils.getServiceReferenceByName(context, PrimitiveManipulationTestService.class.getName(), instance.getInstanceName());
         assertNotNull("Check prim availability", prim_ref);
@@ -81,19 +85,20 @@
         assertEquals("Check - 2", prim.getLong(), 2);
     }
 
-    public void testLongFromObject() {
-        assertEquals("Check - 1", prim.getLong(), 1);
-        Long l = new Long(2);
-        prim.setLong(l);
-        assertEquals("Check - 2", prim.getLong(), 2);
-    }
-
-    public void testLongFromObject2() {
-        assertEquals("Check - 1", prim.getLong(), 1);
-        Long l = new Long(2);
-        prim.setLong(l, "ss");
-        assertEquals("Check - 2", prim.getLong(), 2);
-    }
+    //TODO : how to tests these two Java 5 methods ...
+//    public void testLongFromObject() {
+//        assertEquals("Check - 1", prim.getLong(), 1);
+//        Long l = new Long(2);
+//        prim.setLong(l);
+//        assertEquals("Check - 2", prim.getLong(), 2);
+//    }
+//
+//    public void testLongFromObject2() {
+//        assertEquals("Check - 1", prim.getLong(), 1);
+//        Long l = new Long(2);
+//        prim.setLong(l, "ss");
+//        assertEquals("Check - 2", prim.getLong(), 2);
+//    }
 
     public void testFloat() {
         assertEquals("Check - 1", prim.getFloat(), 1.1f);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/A123/CheckService2.java
similarity index 91%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/A123/CheckService2.java
index 6b0aafc..5f5b74b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/A123/CheckService2.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.A123;
+package org.apache.felix.ipojo.test.scenarios.manipulation.service.A123;
 
 public interface CheckService2 {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/BarService.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/BarService.java
index 727e845..dfe2b9c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/BarService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.manipulation.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/CheckService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/CheckService.java
index 62f254c..ef7e1ee 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.manipulation.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/FooService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/FooService.java
index 78693cf..f1e8dc0 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.manipulation.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/PrimitiveManipulationTestService.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java
rename to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/PrimitiveManipulationTestService.java
index d87118b..cd61e3b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/service/PrimitiveManipulationTestService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.manipulation.service;
 
 public interface PrimitiveManipulationTestService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
copy to ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml b/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml
new file mode 100644
index 0000000..9f386f3
--- /dev/null
+++ b/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml
@@ -0,0 +1,94 @@
+<ipojo>
+	<!-- Simple provider  used for manipulation analysis -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-FooProviderType-1" architecture="true">
+		<provides />
+	</component>
+	
+	<!-- Non lazzy service provider, to check instantiation -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-ImmediateFooProviderType" immediate="true"
+		architecture="true">
+		<provides />
+	</component>
+	
+	<!-- Provider providing 2 services -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+		factory="Manipulation-FooBarProviderType-1" architecture="true">
+		<provides />
+	</component>
+	
+	<!-- Provider with dynamic property -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
+		name="Manipulation-FooProviderType-Dyn" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="2" />
+			<property name="boolean" field="boolProp" value="false" />
+			<property name="string" field="strProp" value="foo" />
+			<property name="strAProp" field="strAProp"
+				value="{foo, bar}" />
+			<property name="intAProp" field="intAProp" value="{ 1,2,3}" />
+		</provides>
+	</component>
+	
+	<!-- Manipulation -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.Manipulation23Tester"
+		factory="Manipulation-PrimitiveManipulationTester" architecture="true">
+		<provides />
+	</component>
+
+	<!-- Manipulation with numbers -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.A123.Manipulation23Tester"
+		factory="Manipulation-PrimitiveManipulationTesterA" architecture="true">
+		<provides />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+		factory="Manipulation-SimpleMultipleCheckServiceProvider" architecture="true">
+		<requires field="fs" />
+		<provides />
+	</component>
+	
+	<!-- Type checking different creation policy -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-FooProviderType-1-Sing" factory-method="singleton"
+		architecture="true">
+		<provides />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-FooProviderType-1-Sev" factory-method="several"
+		architecture="true">
+		<provides />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-FooProviderType-1-SingM" factory-method="singleton"
+		architecture="true">
+		<provides factory="method" />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-FooProviderType-1-SevM" factory-method="several"
+		architecture="true">
+		<provides factory="method" />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="Manipulation-ImmediateFooProviderTypeSingleton" immediate="true"
+		factory-method="singleton" architecture="true">
+		<provides />
+	</component>
+</ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.service.dependency/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.service.dependency/pom.xml
index 4795777..b4abb5e 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.service.dependency/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Service Dependency Test Suite</name>
+	<artifactId>tests.core.service.dependency</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.service.dependency.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.service.dependency.DependencyTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
index 675fe41..72050c3 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index cd2b927..5ef4d3f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/DynCheckServiceProvider.java
similarity index 83%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/DynCheckServiceProvider.java
index cd2b927..151b6dd 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/DynCheckServiceProvider.java
@@ -20,11 +20,11 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 import org.osgi.framework.ServiceReference;
 
-public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
+public class DynCheckServiceProvider extends CheckProviderParentClass implements CheckService {
     
 	FooService fs;
 	
@@ -48,11 +48,7 @@
 		props.put("refU", new Integer(refU));
 		props.put("bothU", new Integer(bothU));
 		if (fs != null) {
-		    props.put("result", new Boolean(fs.foo()));
-		    props.put("boolean", new Boolean(fs.getBoolean()));
 		    props.put("int", new Integer(fs.getInt()));
-		    props.put("long", new Long(fs.getLong()));
-		    props.put("double", new Double(fs.getDouble()));
 		    if(fs.getObject() != null) { props.put("object", fs.getObject()); }
 		}
         props.put("static", CheckService.foo);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckProvider.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckProvider.java
similarity index 92%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckProvider.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckProvider.java
index c05090d..7d5313d 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckProvider.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 
 public class FilterCheckProvider implements CheckService, FooService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckSubscriber.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckSubscriber.java
similarity index 89%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckSubscriber.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckSubscriber.java
index 2c25e8c..a3ffe20 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckSubscriber.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FilterCheckSubscriber.java
@@ -21,8 +21,9 @@
 import java.util.Properties;
 
 import org.apache.felix.ipojo.Nullable;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 
 public class FilterCheckSubscriber implements CheckService {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..534c85f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
@@ -84,14 +84,6 @@
             a.charAt(0);
     }
     
-    private void nexttry(String  s) {
-        try {
-            s += "foo";
-        } catch(RuntimeException e) {
-            
-        }
-    }
-    
 	public boolean getBoolean() { return true; }
 
 	public double getDouble() { return 1.0; }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooServiceDefaultImpl.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooServiceDefaultImpl.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooServiceDefaultImpl.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooServiceDefaultImpl.java
index 8455c23..6231d15 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooServiceDefaultImpl.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooServiceDefaultImpl.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 
 public class FooServiceDefaultImpl implements FooService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodCheckServiceProvider.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodCheckServiceProvider.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodCheckServiceProvider.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodCheckServiceProvider.java
index c069b09..d48e0c7 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodCheckServiceProvider.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodCheckServiceProvider.java
@@ -20,11 +20,12 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
 public class MethodCheckServiceProvider implements CheckService {
 	
 	FooService fs;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodMultipleCheckService.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodMultipleCheckService.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodMultipleCheckService.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodMultipleCheckService.java
index 32d4b1d..18ffacc 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodMultipleCheckService.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MethodMultipleCheckService.java
@@ -22,11 +22,12 @@
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
 public class MethodMultipleCheckService implements CheckService {
 
 	List fs = new ArrayList();
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
index efbc972..ca8c966 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleCheckService.java
@@ -20,10 +20,11 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
 public class MultipleCheckService implements CheckService {
 
     FooService fs[];
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleFilterCheckSubscriber.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleFilterCheckSubscriber.java
similarity index 89%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleFilterCheckSubscriber.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleFilterCheckSubscriber.java
index 6b7370e..15f7dbe 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleFilterCheckSubscriber.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/MultipleFilterCheckSubscriber.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 
 public class MultipleFilterCheckSubscriber implements CheckService {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ParentClass.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/BazProviderType1.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/RankedFooProviderType1.java
similarity index 79%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/BazProviderType1.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/RankedFooProviderType1.java
index 4d9a9bb..6b25a0c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/BazProviderType1.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/RankedFooProviderType1.java
@@ -20,32 +20,33 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
 
-public class BazProviderType1 implements BazService {
-	
-	private int m_bar;
-	private String m_foo;
-
+public class RankedFooProviderType1 implements FooService {	
+	private int m_grade;
+    
+    
 	public boolean foo() {
+	    m_grade = m_grade + 2;
 		return true;
 	}
 
 	public Properties fooProps() {
 		Properties p = new Properties();
-		p.put("bar", new Integer(m_bar));
-		p.put("foo", m_foo);
+		p.put("grade", new Integer(m_grade));
+
 		return p;
 	}
-	
+        
 	public boolean getBoolean() { return true; }
 
 	public double getDouble() { return 1.0; }
 
-	public int getInt() { return 1; }
+	public int getInt() { 
+	    return m_grade; }
 
 	public long getLong() { return 1; }
 
 	public Boolean getObject() { return new Boolean(true); }
-
+	
 }
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedMultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedMultipleDependencies.java
index edc0b2f..18092df 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class DelayedMultipleDependencies extends OSGiTestCase {
 
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedOptionalDependencies.java
index 763ebca..e9f3948 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+
 public class DelayedOptionalDependencies extends OSGiTestCase {
 
     ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedOptionalMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedOptionalMultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedOptionalMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedOptionalMultipleDependencies.java
index 2546039..bd48b88 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedOptionalMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedOptionalMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedSimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedSimpleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedSimpleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedSimpleDependencies.java
index 489c161..b0fde79 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DelayedSimpleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DelayedSimpleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,9 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
-
 public class DelayedSimpleDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/DependencyTest.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyArchitectureTest.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/DependencyTest.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyArchitectureTest.java
index 102df0b..6d2d907 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/DependencyTest.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyArchitectureTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.architecture;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -26,12 +26,13 @@
 import org.apache.felix.ipojo.handlers.dependency.DependencyHandlerDescription;
 import org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandlerDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
-public class DependencyTest extends OSGiTestCase {
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
+public class DependencyArchitectureTest extends OSGiTestCase {
 	
 	ComponentInstance fooProvider1, fooProvider2;
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DependencyTestSuite.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java
similarity index 82%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DependencyTestSuite.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java
index 5326834..5a63567 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/DependencyTestSuite.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java
@@ -16,13 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import junit.framework.Test;
 
 import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
-import org.apache.felix.ipojo.test.scenarios.dependency.di.DefaultImplementationTestSuite;
-import org.apache.felix.ipojo.test.scenarios.dependency.statics.StaticDependencyTestSuite;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.di.DefaultImplementationTestSuite;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.dynamic.priority.DynamicPriorityDependencyTestSuite;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.statics.StaticDependencyTestSuite;
 import org.osgi.framework.BundleContext;
 
 public class DependencyTestSuite {
@@ -52,6 +53,8 @@
         ots.addTestSuite(OptionalMultipleFilterDependencies.class);
         ots.addTest(StaticDependencyTestSuite.suite(bc));
         ots.addTest(DefaultImplementationTestSuite.suite(bc));
+        ots.addTestSuite(DependencyArchitectureTest.class);
+        ots.addTest(DynamicPriorityDependencyTestSuite.suite(bc));
 		return ots;
 	}
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedMultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedMultipleDependencies.java
index 822be4b..8e373ff 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedOptionalDependencies.java
index 72f9271..5c7d0d1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedOptionalMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedOptionalMultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedOptionalMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedOptionalMultipleDependencies.java
index f08366b..e1c7931 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedOptionalMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedOptionalMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedSimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedSimpleDependencies.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedSimpleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedSimpleDependencies.java
index bc7af12..d564958 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodDelayedSimpleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodDelayedSimpleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodMultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodMultipleDependencies.java
index 20cca5b..92eb42c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodOptionalDependencies.java
index e7e075f..c104188 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodOptionalMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodOptionalMultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodOptionalMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodOptionalMultipleDependencies.java
index fa571eb..ef5f20c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodOptionalMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodOptionalMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodSimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodSimpleDependencies.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodSimpleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodSimpleDependencies.java
index bf314a4..71ebfe6 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MethodSimpleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MethodSimpleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MultipleDependencies.java
index aaa401c..d539d32 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MultipleFilterDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MultipleFilterDependencies.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MultipleFilterDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MultipleFilterDependencies.java
index 8c55bb1..580f60c 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/MultipleFilterDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/MultipleFilterDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class MultipleFilterDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalDependencies.java
index 773ea6c..1357c65 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalMultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalMultipleDependencies.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalMultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalMultipleDependencies.java
index 91e222d..07520d6 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalMultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalMultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalMultipleDependencies extends OSGiTestCase {
 
 	ComponentInstance instance1, instance2, instance3, instance4;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalMultipleFilterDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalMultipleFilterDependencies.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalMultipleFilterDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalMultipleFilterDependencies.java
index 5d0ae74..298bce6 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalMultipleFilterDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalMultipleFilterDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalMultipleFilterDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalNoNullableDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalNoNullableDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalNoNullableDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalNoNullableDependencies.java
index 1e4a34b..894f987 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalNoNullableDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalNoNullableDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalNoNullableDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalSimpleFilterDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalSimpleFilterDependencies.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalSimpleFilterDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalSimpleFilterDependencies.java
index 061d08e..07cab6f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/OptionalSimpleFilterDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/OptionalSimpleFilterDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalSimpleFilterDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/SimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/SimpleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/SimpleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/SimpleDependencies.java
index ad02a8f..ea3a29b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/SimpleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/SimpleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class SimpleDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5, instance6;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/SimpleFilterDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/SimpleFilterDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/SimpleFilterDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/SimpleFilterDependencies.java
index c6a2333..db8103a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/SimpleFilterDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/SimpleFilterDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency;
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class SimpleFilterDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/DefaultImplementationTestSuite.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/DefaultImplementationTestSuite.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/DefaultImplementationTestSuite.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/DefaultImplementationTestSuite.java
index fa045d7..f754ce6 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/DefaultImplementationTestSuite.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/DefaultImplementationTestSuite.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.di;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.di;
 
 import junit.framework.Test;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/DelayedOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/DelayedOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/DelayedOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/DelayedOptionalDependencies.java
index 29a3efe..996fbfd 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/DelayedOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/DelayedOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.di;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.di;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class DelayedOptionalDependencies extends OSGiTestCase {
 
     ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/MethodDelayedOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/MethodDelayedOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/MethodDelayedOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/MethodDelayedOptionalDependencies.java
index 4d404c7..fa71482 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/MethodDelayedOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/MethodDelayedOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.di;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.di;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class MethodDelayedOptionalDependencies extends OSGiTestCase {
 
     ComponentInstance instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/MethodOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/MethodOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/MethodOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/MethodOptionalDependencies.java
index 2713fbe..00600ff 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/MethodOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/MethodOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.di;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.di;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class MethodOptionalDependencies extends OSGiTestCase {
 
     ComponentInstance instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/OptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/OptionalDependencies.java
index 1a1d359..033b0f9 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/di/OptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.di;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.di;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/ExternalHandlerTestSuite.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/dynamic/priority/DynamicPriorityDependencyTestSuite.java
similarity index 78%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/ExternalHandlerTestSuite.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/dynamic/priority/DynamicPriorityDependencyTestSuite.java
index f37d2ec..c60fe79 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/ExternalHandlerTestSuite.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/dynamic/priority/DynamicPriorityDependencyTestSuite.java
@@ -16,19 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.handler;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.dynamic.priority;
 
 import junit.framework.Test;
-import junit.framework.TestSuite;
 
 import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
 import org.osgi.framework.BundleContext;
 
-public class ExternalHandlerTestSuite extends TestSuite {
+public class DynamicPriorityDependencyTestSuite {
 
 	public static Test suite(BundleContext bc) {
-		OSGiTestSuite ots = new OSGiTestSuite("External Handler Test Suite", bc);
-		ots.addTestSuite(HandlerTest.class);
+		OSGiTestSuite ots = new OSGiTestSuite("Dynamic-Priority Dependency Test Suite", bc);
+		ots.addTestSuite( SimpleDependencies.class);
 		return ots;
 	}
 
diff --git a/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/dynamic/priority/SimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/dynamic/priority/SimpleDependencies.java
new file mode 100644
index 0000000..f942819
--- /dev/null
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/dynamic/priority/SimpleDependencies.java
@@ -0,0 +1,157 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.service.dependency.dynamic.priority;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.architecture.Architecture;
+import org.apache.felix.ipojo.architecture.InstanceDescription;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
+public class SimpleDependencies extends OSGiTestCase {
+	
+	ComponentInstance instance1, instance3;
+	ComponentInstance fooProvider;
+    ComponentInstance fooProvider2;
+	
+	public void setUp() {
+		try {
+			Properties prov = new Properties();
+			prov.put("name", "FooProvider-1");
+			prov.put("service.ranking", "1");
+			fooProvider = Utils.getFactoryByName(context, "RankedFooProviderType").createComponentInstance(prov);
+			fooProvider.stop();
+			
+			Properties prov2 = new Properties();
+            prov2.put("name", "FooProvider-2");
+            prov2.put("service.ranking", "0");
+            fooProvider2 = Utils.getFactoryByName(context, "RankedFooProviderType").createComponentInstance(prov2);
+            fooProvider2.stop();
+		
+			Properties i1 = new Properties();
+			i1.put("name", "Simple");
+			instance1 = Utils.getFactoryByName(context, "DPSimpleCheckServiceProvider").createComponentInstance(i1);
+		
+			Properties i3 = new Properties();
+			i3.put("name", "Object");
+			instance3 = Utils.getFactoryByName(context, "DPObjectCheckServiceProvider").createComponentInstance(i3);
+			
+		} catch(Exception e) { 
+		    e.printStackTrace();
+		    fail(e.getMessage()); }
+		
+	}
+	
+	public void tearDown() {
+		instance1.dispose();
+		instance3.dispose();
+		fooProvider.dispose();
+		fooProvider2.dispose();
+		instance1 = null;
+		instance3 = null;
+		fooProvider = null;
+		fooProvider2 = null;
+	}
+	
+	public void testSimple() {
+		ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance1.getInstanceName());
+		assertNotNull("Check architecture availability", arch_ref);
+		InstanceDescription id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		fooProvider2.start();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID);
+		
+		ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName());
+		assertNotNull("Check CheckService availability", cs_ref);
+		CheckService cs = (CheckService) context.getService(cs_ref);
+		// Check grade
+		Integer grade = (Integer) cs.getProps().get("int");
+		assertEquals("Check first grade", 1, grade.intValue());
+		
+		fooProvider.stop(); // Turn off the best provider.
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID);
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        cs = (CheckService) context.getService(cs_ref);
+        // Check grade
+        grade = (Integer) cs.getProps().get("int");
+        assertEquals("Check second grade", 0, grade.intValue());
+        
+		fooProvider.start(); // Turn on the best provider.
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID);
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        cs = (CheckService) context.getService(cs_ref);
+        // Check grade
+        grade = (Integer) cs.getProps().get("int");
+        assertEquals("Check third grade", 1, grade.intValue());
+        
+		
+        // Increase the second provider grade.
+        ServiceReference fs_ref = Utils.getServiceReferenceByName(context, FooService.class.getName(), fooProvider2.getInstanceName());
+        assertNotNull("Check foo service (2) reference", fs_ref);
+        FooService fs = (FooService) context.getService(fs_ref);
+        
+        fs.foo(); // Increase the grade (now = 2)
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        cs = (CheckService) context.getService(cs_ref);
+        // Check grade
+        grade = (Integer) cs.getProps().get("int");
+        assertEquals("Check fourth grade", 2, grade.intValue());
+        
+        // Increase the other provider grade.
+        fs_ref = Utils.getServiceReferenceByName(context, FooService.class.getName(), fooProvider.getInstanceName());
+        assertNotNull("Check foo service (1) reference", fs_ref);
+        fs = (FooService) context.getService(fs_ref);
+        fs.foo(); //(grade = 3)
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        cs = (CheckService) context.getService(cs_ref);
+        // Check grade
+        grade = (Integer) cs.getProps().get("int");
+        assertEquals("Check fifth grade", 3, grade.intValue());
+        		
+		id = null;
+		cs = null;
+		context.ungetService(arch_ref);
+		context.ungetService(cs_ref);
+		context.ungetService(fs_ref);
+		fooProvider.stop();
+		fooProvider2.stop();
+	}
+}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/service/CheckService.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/service/CheckService.java
index 62f254c..2fed64e 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/service/FooService.java
similarity index 92%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/service/FooService.java
index 78693cf..c5932c3 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MethodOptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MethodOptionalDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MethodOptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MethodOptionalDependencies.java
index 310f131..a2c4cd5 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MethodOptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MethodOptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.statics;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class MethodOptionalDependencies extends OSGiTestCase {
 
     ComponentInstance instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MethodSimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MethodSimpleDependencies.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MethodSimpleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MethodSimpleDependencies.java
index 70fef81..4fa5043 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MethodSimpleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MethodSimpleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.statics;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class MethodSimpleDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MultipleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MultipleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MultipleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MultipleDependencies.java
index 251adc7..e533fb0 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/MultipleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/MultipleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.statics;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class MultipleDependencies extends OSGiTestCase {
 
 	ComponentInstance instance1, instance2, instance3, instance4;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/OptionalDependencies.java
similarity index 99%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/OptionalDependencies.java
index 601cd08..c90f161 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/OptionalDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.statics;
 
 import java.util.Properties;
 
@@ -27,10 +27,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class OptionalDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/SimpleDependencies.java
similarity index 98%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/SimpleDependencies.java
index 8623784..cb089ae 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/SimpleDependencies.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.statics;
 
 import java.util.Properties;
 
@@ -24,10 +24,11 @@
 import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.architecture.InstanceDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+
 public class SimpleDependencies extends OSGiTestCase {
 	
 	ComponentInstance instance1, instance2, instance3, instance4, instance5;
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/StaticDependencyTestSuite.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java
rename to ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/StaticDependencyTestSuite.java
index 656c635..0d8ea4b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/statics/StaticDependencyTestSuite.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+package org.apache.felix.ipojo.test.scenarios.service.dependency.statics;
 
 import junit.framework.Test;
 
diff --git a/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
new file mode 100644
index 0000000..7dbb8d0
--- /dev/null
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -0,0 +1,325 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.util;
+
+import java.util.Dictionary;
+import java.util.Properties;
+
+import junit.framework.Assert;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.Handler;
+import org.apache.felix.ipojo.HandlerFactory;
+import org.apache.felix.ipojo.ServiceContext;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ManagedServiceFactory;
+
+public class Utils {
+
+    public static Factory getFactoryByName(BundleContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name=" + factoryName + ")");
+            if (refs == null) {
+                System.err.println("Cannot get the factory " + factoryName);
+                return null;
+            }
+            return ((Factory) bc.getService(refs[0]));
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static HandlerFactory getHandlerFactoryByName(BundleContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(" + Handler.HANDLER_NAME_PROPERTY + "=" + factoryName + ")");
+            if (refs == null) {
+                System.err.println("Cannot get the factory " + factoryName);
+                return null;
+            }
+            return (HandlerFactory) bc.getService(refs[0]);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static ComponentInstance getComponentInstance(BundleContext bc, String factoryName, Dictionary configuration) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) {
+            System.err.println("Factory " + factoryName + " not found");
+            return null;
+        }
+
+        // if(fact.isAcceptable(configuration)) {
+        try {
+            return fact.createComponentInstance(configuration);
+        } catch (Exception e) {
+            e.printStackTrace();
+            Assert.fail("Cannot create the instance from " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+        // }
+        // else {
+        // System.err.println("Configuration not accepted by : " + factoryName);
+        // return null;
+        // }
+    }
+
+    public static ComponentInstance getComponentInstanceByName(BundleContext bc, String factoryName, String name) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) {
+            System.err.println("Factory " + factoryName + " not found");
+            return null;
+        }
+
+        try {
+            Properties props = new Properties();
+            props.put("name", name);
+            return fact.createComponentInstance(props);
+        } catch (Exception e) {
+            System.err.println("Cannot create the instance from " + factoryName + " : " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static ServiceReference[] getServiceReferences(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return new ServiceReference[0];
+        } else {
+            return refs;
+        }
+    }
+
+    public static ServiceReference getServiceReference(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static ServiceReference getServiceReferenceByName(BundleContext bc, String itf, String name) {
+        ServiceReference[] refs = null;
+        String filter = null;
+        if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
+            filter = "(" + "factory.name" + "=" + name + ")";
+        } else {
+            filter = "(" + "instance.name" + "=" + name + ")";
+        }
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+    
+    public static ServiceReference getServiceReferenceByPID(BundleContext bc, String itf, String pid) {
+        ServiceReference[] refs = null;
+        String filter = "(" + "service.pid" + "=" + pid + ")";
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else if (refs.length == 1) {
+            return refs[0];
+        } else {
+            Assert.fail("A service lookup by PID returned several providers (" + refs.length + ")" + " for " + itf + " with " + pid);
+            return null;
+        }
+    }
+
+    public static Object getServiceObject(BundleContext bc, String itf, String filter) {
+        ServiceReference ref = getServiceReference(bc, itf, filter);
+        if (ref != null) {
+            return bc.getService(ref);
+        } else {
+            return null;
+        }
+    }
+
+    public static Object[] getServiceObjects(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = getServiceReferences(bc, itf, filter);
+        if (refs != null) {
+            Object[] list = new Object[refs.length];
+            for (int i = 0; i < refs.length; i++) {
+                list[i] = bc.getService(refs[i]);
+            }
+            return list;
+        } else {
+            return new Object[0];
+        }
+    }
+
+//    public static ServiceContext getServiceContext(ComponentInstance ci) {
+//        if (ci instanceof CompositeManager) {
+//            return ((CompositeManager) ci).getServiceContext();
+//        } else {
+//            throw new RuntimeException("Cannot get the service context form an non composite instance");
+//        }
+//    }
+
+    public static Factory getFactoryByName(ServiceContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name=" + factoryName + ")");
+            if (refs == null) { return null; }
+            return ((Factory) bc.getService(refs[0]));
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static ComponentInstance getComponentInstance(ServiceContext bc, String factoryName, Dictionary configuration) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) { return null; }
+
+        if (fact.isAcceptable(configuration)) {
+            try {
+                return fact.createComponentInstance(configuration);
+            } catch (Exception e) {
+                System.err.println(e.getMessage());
+                e.printStackTrace();
+                return null;
+            }
+        } else {
+            System.err.println("Configuration not accepted by : " + factoryName);
+            return null;
+        }
+    }
+
+    public static ServiceReference[] getServiceReferences(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return new ServiceReference[0];
+        } else {
+            return refs;
+        }
+    }
+
+    public static ServiceReference getServiceReference(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static ServiceReference getServiceReferenceByName(ServiceContext bc, String itf, String name) {
+        ServiceReference[] refs = null;
+        String filter = null;
+        if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
+            filter = "(" + "factory.name" + "=" + name + ")";
+        } else {
+            filter = "(" + "instance.name" + "=" + name + ")";
+        }
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static Object getServiceObject(ServiceContext bc, String itf, String filter) {
+        ServiceReference ref = getServiceReference(bc, itf, filter);
+        if (ref != null) {
+            return bc.getService(ref);
+        } else {
+            return null;
+        }
+    }
+
+    public static Object[] getServiceObjects(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = getServiceReferences(bc, itf, filter);
+        if (refs != null) {
+            Object[] list = new Object[refs.length];
+            for (int i = 0; i < refs.length; i++) {
+                list[i] = bc.getService(refs[i]);
+            }
+            return list;
+        } else {
+            return new Object[0];
+        }
+    }
+    
+    public static boolean contains(String string, String[] array) {
+        for (int i = 0; array != null && i < array.length; i++) {
+            if (array[i] != null  && array[i].equals(string)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    public static boolean contains(int value, int[] array) {
+        for (int i = 0; array != null && i < array.length; i++) {
+            if (array[i] == value) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}
diff --git a/ipojo/tests/tests.core/src/main/resources/metadata.xml b/ipojo/tests/tests.core.service.dependency/src/main/resources/metadata.xml
similarity index 64%
rename from ipojo/tests/tests.core/src/main/resources/metadata.xml
rename to ipojo/tests/tests.core.service.dependency/src/main/resources/metadata.xml
index 3e295e2..6b84847 100644
--- a/ipojo/tests/tests.core/src/main/resources/metadata.xml
+++ b/ipojo/tests/tests.core.service.dependency/src/main/resources/metadata.xml
@@ -1,260 +1,10 @@
-<ipojo
-	xmlns:cs="org.apache.felix.ipojo.test.handler.checkservice">
-	<component classname="org.apache.felix.ipojo.test.log.LogImpl"
-		factory="true" name="log">
-		<provides />
-	</component>
-
-	<!-- Component Types used inside tests -->
-	<!--  Service Providing -->
+<ipojo>
 	<component
 		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
 		factory="FooProviderType-1" architecture="true">
 		<provides />
 	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-1-Sing" factory-method="singleton"
-		architecture="true">
-		<provides />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-1-Sev" factory-method="several"
-		architecture="true">
-		<provides />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-1-SingM" factory-method="singleton"
-		architecture="true">
-		<provides factory="method" />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-1-SevM" factory-method="several"
-		architecture="true">
-		<provides factory="method" />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		name="FooProviderType-2" architecture="true">
-		<provides>
-			<property name="int" type="int" value="2" />
-			<property name="long" type="long" value="40" />
-			<property name="string" type="java.lang.String" value="foo" />
-			<property name="strAProp" type="java.lang.String[]"
-				value="{foo, bar}" />
-			<property name="intAProp" type="int[]" value="{1,2,3}" />
-		</provides>
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
-		name="FooProviderType-Dyn" architecture="true">
-		<provides>
-			<property name="int" field="intProp" value="2" />
-			<property name="boolean" field="boolProp" value="false" />
-			<property name="string" field="strProp" value="foo" />
-			<property name="strAProp" field="strAProp"
-				value="{foo, bar}" />
-			<property name="intAProp" field="intAProp" value="{ 1,2,3}" />
-		</provides>
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
-		name="FooProviderType-Dyn2" factory="true" architecture="true">
-		<provides>
-			<property name="int" field="intProp" value="4" />
-			<property name="boolean" field="boolProp" />
-			<property name="string" field="strProp" />
-			<property name="strAProp" field="strAProp" />
-			<property name="intAProp" field="intAProp"
-				value="{1, 2,3 }" />
-		</provides>
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
-		factory="FooProviderType-Conf" architecture="true">
-		<provides />
-		<properties propagation="false">
-			<property name="int" field="intProp" value="2" />
-			<property name="boolean" field="boolProp" value="false" />
-			<property name="string" field="strProp" value="foo" />
-			<property name="strAProp" field="strAProp"
-				value="{foo, bar}" />
-			<property name="intAProp" field="intAProp" value="{1,2, 3}" />
-		</properties>
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-3" architecture="true">
-		<provides>
-			<property name="foo" field="m_foo" />
-			<property name="bar" field="m_bar" />
-			<property name="baz" type="java.lang.String" />
-		</provides>
-		<properties propagation="true">
-			<property name="foo" field="m_foo" />
-			<property name="bar" field="m_bar" />
-		</properties>
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-4" architecture="true">
-		<provides>
-			<property name="foo" field="m_foo" />
-			<property name="bar" field="m_bar" />
-			<property name="baz" type="java.lang.String" />
-		</provides>
-		<properties propagation="true" pid="FooProvider-3">
-			<property name="foo" field="m_foo" />
-			<property name="bar" field="m_bar" />
-		</properties>
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="FooProviderType-itf" architecture="true">
-		<provides
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService" />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
-		factory="FooBarProviderType-1" architecture="true">
-		<provides />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
-		factory="FooBarProviderType-2" architecture="true">
-		<provides
-			interface="{org.apache.felix.ipojo.test.scenarios.service.FooService, org.apache.felix.ipojo.test.scenarios.service.BarService }" />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
-		factory="FooBarProviderType-3" architecture="true">
-		<provides
-			interface="{org.apache.felix.ipojo.test.scenarios.service.FooService}">
-			<property name="baz" type="java.lang.String" value="foo" />
-		</provides>
-		<provides
-			interface="{org.apache.felix.ipojo.test.scenarios.service.BarService}">
-			<property name="baz" type="java.lang.String" value="bar" />
-		</provides>
-	</component>
-
-	<!-- Immediate Component -->
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="ImmediateFooProviderType" immediate="true"
-		architecture="true">
-		<provides />
-	</component>
-
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="ImmediateFooProviderTypeSingleton" immediate="true"
-		factory-method="singleton" architecture="true">
-		<provides />
-	</component>
-
-	<!--  Simple Filter Dependencies -->
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckProvider"
-		factory="SimpleFilterCheckServiceProvider" architecture="true">
-		<provides>
-			<property field="m_toto" name="toto" value="A" />
-		</provides>
-	</component>
-
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
-		factory="SimpleFilterCheckServiceSubscriber" architecture="true">
-		<requires field="m_foo" filter="(toto=B)" id="id1">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
-		factory="SimpleFilterCheckServiceSubscriber2" architecture="true">
-		<requires field="m_foo" id="id2">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<!--  Optional Simple Filter Dependencies -->
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
-		factory="OptionalSimpleFilterCheckServiceSubscriber"
-		architecture="true">
-		<requires field="m_foo" filter="(toto=B)" id="id1"
-			optional="true">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
-		factory="OptionalSimpleFilterCheckServiceSubscriber2"
-		architecture="true">
-		<requires field="m_foo" id="id2" optional="true">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<!-- Aggregate filter Dependencies-->
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
-		factory="MultipleFilterCheckServiceSubscriber" architecture="true">
-		<requires field="m_foo" filter="(toto=B)" id="id1">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
-		factory="MultipleFilterCheckServiceSubscriber2" architecture="true">
-		<requires field="m_foo" id="id2">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<!--  Optional Aggregate Filter Dependencies -->
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
-		factory="OptionalMultipleFilterCheckServiceSubscriber"
-		architecture="true">
-		<requires field="m_foo" filter="(toto=B)" id="id1"
-			optional="true">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
-		factory="OptionalMultipleFilterCheckServiceSubscriber2"
-		architecture="true">
-		<requires field="m_foo" id="id2" optional="true">
-			<callback type="bind" method="Bind" />
-			<callback type="unbind" method="Unbind" />
-		</requires>
-		<provides />
-	</component>
-
-
+	
 	<!--  Simple Dependencies -->
 	<component
 		className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
@@ -322,7 +72,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
 		factory="MRefCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService">
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
 		</requires>
@@ -437,7 +187,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
 		factory="MRefOptionalCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			optional="true">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
@@ -448,7 +198,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
 		factory="MBothOptionalCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			optional="true">
 			<callback type="bind" method="bothBind" />
 			<callback type="unbind" method="bothUnbind" />
@@ -519,7 +269,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
 		factory="DIMRefOptionalCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			optional="true"
 			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
 			<callback type="bind" method="refBind" />
@@ -531,7 +281,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
 		factory="DIMBothOptionalCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			optional="true"
 			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
 			<callback type="bind" method="bothBind" />
@@ -596,7 +346,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
 		factory="MRefMultipleCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			aggregate="true">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
@@ -666,7 +416,7 @@
 		factory="MRefOptionalMultipleCheckServiceProvider"
 		architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			aggregate="true" optional="true">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
@@ -730,7 +480,7 @@
 		className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
 		factory="StaticMRefCheckServiceProvider" architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			policy="static">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
@@ -809,7 +559,7 @@
 		factory="StaticMRefOptionalCheckServiceProvider"
 		architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			optional="true" policy="static">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
@@ -821,7 +571,7 @@
 		factory="StaticMBothOptionalCheckServiceProvider"
 		architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			optional="true" policy="static">
 			<callback type="bind" method="bothBind" />
 			<callback type="unbind" method="bothUnbind" />
@@ -890,7 +640,7 @@
 		factory="StaticMRefMultipleCheckServiceProvider"
 		architecture="true">
 		<requires
-			interface="org.apache.felix.ipojo.test.scenarios.service.FooService"
+			interface="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 			aggregate="true" policy="static">
 			<callback type="bind" method="refBind" />
 			<callback type="unbind" method="refUnbind" />
@@ -907,254 +657,127 @@
 		</requires>
 		<provides />
 	</component>
-
-
-	<!-- Lifecycle Callback -->
+	
+	<!--  Simple Filter Dependencies -->
 	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
-		factory="CallbackCheckService" architecture="true">
-		<requires field="fs" />
-		<provides />
-		<callback transition="validate" method="start" />
-		<callback transition="invalidate" method="stop" />
+		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckProvider"
+		factory="SimpleFilterCheckServiceProvider" architecture="true">
+		<provides>
+			<property field="m_toto" name="toto" value="A" />
+		</provides>
 	</component>
+
 	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
-		factory="ParentCallbackCheckService" architecture="true">
-		<requires field="fs" />
+		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
+		factory="SimpleFilterCheckServiceSubscriber" architecture="true">
+		<requires field="m_foo" filter="(toto=B)" id="id1">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
 		<provides />
-		<callback transition="validate" method="parentStart" />
-		<callback transition="invalidate" method="parentStop" />
 	</component>
+
 	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
-		immediate="true" factory="ImmediateCallbackCheckService"
+		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
+		factory="SimpleFilterCheckServiceSubscriber2" architecture="true">
+		<requires field="m_foo" id="id2">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
+		<provides />
+	</component>
+
+	<!--  Optional Simple Filter Dependencies -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
+		factory="OptionalSimpleFilterCheckServiceSubscriber"
 		architecture="true">
-		<requires field="fs" />
-		<provides />
-		<callback transition="validate" method="start" />
-		<callback transition="invalidate" method="stop" />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
-		immediate="true" factory="ImmediateCallbackCheckServiceSingleton"
-		factory-method="singleton" architecture="true">
-		<requires field="fs" />
-		<provides />
-		<callback transition="validate" method="start" />
-		<callback transition="invalidate" method="stop" />
-	</component>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.CallbackCheckService"
-		immediate="true" factory="ImmediateCallbackCheckServiceSeveral"
-		factory-method="several" architecture="true">
-		<requires field="fs" />
-		<provides />
-		<callback transition="validate" method="start" />
-		<callback transition="invalidate" method="stop" />
-	</component>
-
-	<!-- Manipulation -->
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.Manipulation23Tester"
-		factory="PrimitiveManipulationTester" architecture="true">
+		<requires field="m_foo" filter="(toto=B)" id="id1"
+			optional="true">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
 		<provides />
 	</component>
 
 	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.A123.Manipulation23Tester"
-		factory="PrimitiveManipulationTesterA" architecture="true">
-		<provides />
-	</component>
-
-	<!-- Configuration Management Test -->
-	<component factory="FieldConfigurableCheckService"
-		className="org.apache.felix.ipojo.test.scenarios.component.ConfigurableCheckServiceProvider"
+		className="org.apache.felix.ipojo.test.scenarios.component.FilterCheckSubscriber"
+		factory="OptionalSimpleFilterCheckServiceSubscriber2"
 		architecture="true">
+		<requires field="m_foo" id="id2" optional="true">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
 		<provides />
-		<properties propagation="true">
-			<property field="b" />
-			<property field="s" />
-			<property field="i" />
-			<property field="l" />
-			<property field="d" />
-			<property field="f" />
-			<property field="c" />
-			<property field="bool" />
-			<property field="bs" />
-			<property field="ss" />
-			<property field="is" />
-			<property field="ls" />
-			<property field="ds" />
-			<property field="fs" />
-			<property field="cs" />
-			<property field="bools" />
-			<property field="string" />
-			<property field="strings" />
-		</properties>
 	</component>
 
-	<component factory="BothConfigurableCheckService"
-		className="org.apache.felix.ipojo.test.scenarios.component.ConfigurableCheckServiceProvider"
+	<!-- Aggregate filter Dependencies-->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
+		factory="MultipleFilterCheckServiceSubscriber" architecture="true">
+		<requires field="m_foo" filter="(toto=B)" id="id1">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
+		<provides />
+	</component>
+
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
+		factory="MultipleFilterCheckServiceSubscriber2" architecture="true">
+		<requires field="m_foo" id="id2">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
+		<provides />
+	</component>
+
+	<!--  Optional Aggregate Filter Dependencies -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
+		factory="OptionalMultipleFilterCheckServiceSubscriber"
 		architecture="true">
+		<requires field="m_foo" filter="(toto=B)" id="id1"
+			optional="true">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
 		<provides />
-		<properties propagation="true">
-			<property field="b" method="updateB" />
-			<property field="s" method="updateS" />
-			<property field="i" method="updateI" />
-			<property field="l" method="updateL" />
-			<property field="d" method="updateD" />
-			<property field="f" method="updateF" />
-			<property field="c" method="updateC" />
-			<property field="bool" method="updateBool" />
-			<property field="bs" method="updateBs" />
-			<property field="ss" method="updateSs" />
-			<property field="is" method="updateIs" />
-			<property field="ls" method="updateLs" />
-			<property field="ds" method="updateDs" />
-			<property field="fs" method="updateFs" />
-			<property field="cs" method="updateCs" />
-			<property field="bools" method="updateBools" />
-			<property field="string" method="updateString" />
-			<property field="strings" method="updateStrings" />
-		</properties>
 	</component>
 
-	<component factory="MethodConfigurableCheckService"
-		className="org.apache.felix.ipojo.test.scenarios.component.ConfigurableCheckServiceProvider"
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.MultipleFilterCheckSubscriber"
+		factory="OptionalMultipleFilterCheckServiceSubscriber2"
 		architecture="true">
-		<provides />
-		<properties propagation="true">
-			<property method="updateB" name="b" />
-			<property method="updateS" name="s" />
-			<property method="updateI" name="i" />
-			<property method="updateL" name="l" />
-			<property method="updateD" name="d" />
-			<property method="updateF" name="f" />
-			<property method="updateC" name="c" />
-			<property method="updateBool" name="bool" />
-			<property method="updateBs" name="bs" />
-			<property method="updateSs" name="ss" />
-			<property method="updateIs" name="is" />
-			<property method="updateLs" name="ls" />
-			<property method="updateDs" name="ds" />
-			<property method="updateFs" name="fs" />
-			<property method="updateCs" name="cs" />
-			<property method="updateBools" name="bools" />
-			<property method="updateString" name="string" />
-			<property method="updateStrings" name="strings" />
-		</properties>
-	</component>
-
-	<component factory="ParentMethodConfigurableCheckService"
-		className="org.apache.felix.ipojo.test.scenarios.component.ParentConfigurableCheckServiceProvider"
-		architecture="true">
-		<provides />
-		<properties propagation="true">
-			<property method="updateB" name="b" />
-			<property method="updateS" name="s" />
-			<property method="updateI" name="i" />
-			<property method="updateL" name="l" />
-			<property method="updateD" name="d" />
-			<property method="updateF" name="f" />
-			<property method="updateC" name="c" />
-			<property method="updateBool" name="bool" />
-			<property method="updateBs" name="bs" />
-			<property method="updateSs" name="ss" />
-			<property method="updateIs" name="is" />
-			<property method="updateLs" name="ls" />
-			<property method="updateDs" name="ds" />
-			<property method="updateFs" name="fs" />
-			<property method="updateCs" name="cs" />
-			<property method="updateBools" name="bools" />
-			<property method="updateString" name="string" type="string" />
-			<property method="updateStrings" name="strings"
-				type="java.lang.String[]" />
-		</properties>
-	</component>
-
-	<!-- Handler test -->
-	<handler
-		classname="org.apache.felix.ipojo.test.handler.CheckServiceHandler"
-		name="check"
-		namespace="org.apache.felix.ipojo.test.handler.checkservice"
-		architecture="false">
-		<controller field="isValid" />
-	</handler>
-	<component
-		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		factory="HandlerTester" architecture="true">
-		<cs:check />
-	</component>
-	<instance name="HandlerTest-2" component="HandlerTester">
-		<property name="csh.simple" value="Simple" />
-		<property name="csh.map">
-			<property name="a" value="a" />
-			<property name="b" value="b" />
-			<property name="c" value="c" />
-		</property>
-	</instance>
-
-	<!-- Test lifecycle controller -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"
-		name="lcTest">
-		<provides />
-		<controller field="m_state" />
-		<properties>
-			<property name="conf" field="m_conf" method="setConf" />
-		</properties>
-	</component>
-
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"
-		name="lcTest2" immediate="true" architecture="true">
-		<provides />
-		<controller field="m_state" />
-		<properties>
-			<property name="conf" field="m_conf" method="setConf" />
-		</properties>
-	</component>
-
-	<!--  Inherited Provides -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
-		name="PI1" architecture="true">
+		<requires field="m_foo" id="id2" optional="true">
+			<callback type="bind" method="Bind" />
+			<callback type="unbind" method="Unbind" />
+		</requires>
 		<provides />
 	</component>
-
+	
+	
+	<!-- Dynamic-Priority -->
 	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
-		name="PI1-1" architecture="true">
-		<provides
-			interface="org.apache.felix.ipojo.test.scenarios.service.ParentParentInterface" />
+		className="org.apache.felix.ipojo.test.scenarios.component.RankedFooProviderType1"
+		factory="RankedFooProviderType" architecture="true">
+		<provides>
+			<property field="m_grade" name="service.ranking"/>
+		</provides>
 	</component>
-
 	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
-		name="PI1-2" architecture="true">
-		<provides
-			interface="{org.apache.felix.ipojo.test.scenarios.service.ParentParentInterface, org.apache.felix.ipojo.test.scenarios.service.ParentInterface2}" />
-	</component>
-
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
-		name="PI2" architecture="true">
+		className="org.apache.felix.ipojo.test.scenarios.component.DynCheckServiceProvider"
+		factory="DPSimpleCheckServiceProvider" architecture="true">
+		<requires field="fs" policy="dynamic-priority" />
 		<provides />
 	</component>
-
 	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
-		name="PI2-1" architecture="true">
-		<provides
-			interface="org.apache.felix.ipojo.test.scenarios.service.ParentParentInterface" />
-	</component>
-
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"
-		name="PI3" architecture="true">
+		className="org.apache.felix.ipojo.test.scenarios.component.DynCheckServiceProvider"
+		factory="DPObjectCheckServiceProvider" architecture="true">
+		<requires field="fs" policy="dynamic-priority">
+			<callback type="bind" method="objectBind" />
+			<callback type="unbind" method="objectUnbind" />
+		</requires>
 		<provides />
 	</component>
-
-	<instance component="log" name="MyLogger" />
 </ipojo>
diff --git a/ipojo/tests/tests.core/pom.xml b/ipojo/tests/tests.core.service.providing/pom.xml
similarity index 87%
copy from ipojo/tests/tests.core/pom.xml
copy to ipojo/tests/tests.core.service.providing/pom.xml
index 4795777..ad48a52 100644
--- a/ipojo/tests/tests.core/pom.xml
+++ b/ipojo/tests/tests.core.service.providing/pom.xml
@@ -19,8 +19,8 @@
 <project>
 	<modelVersion>4.0.0</modelVersion>
 	<packaging>bundle</packaging>
-	<name>iPOJO Test Suite</name>
-	<artifactId>tests.core</artifactId>
+	<name>iPOJO Service Providing Test Suite</name>
+	<artifactId>tests.core.ps</artifactId>
 	<groupId>ipojo.tests</groupId>
 	<version>0.7.6-SNAPSHOT</version>
 	<dependencies>
@@ -31,11 +31,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>0.7.6-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
 			<version>0.7.6-SNAPSHOT</version>
 		</dependency>
@@ -65,7 +60,7 @@
 				<configuration>
 					<instructions>
 						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service
+							org.apache.felix.ipojo.test.scenarios.ps.service
 						</Export-Package>
 						<Bundle-SymbolicName>
 							${pom.artifactId}
@@ -74,7 +69,7 @@
 							org.apache.felix.ipojo.test*
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.IPOJOTestSuite
+							org.apache.felix.ipojo.test.scenarios.ps.ProvidedServiceTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -98,8 +93,8 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
 				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
+					<source>1.4</source>
+					<target>1.4</target>
 				</configuration>
 			</plugin>
 		</plugins>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
similarity index 95%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
copy to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
index 675fe41..cef0891 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckProviderParentClass.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public abstract class CheckProviderParentClass {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
copy to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index cd2b927..a41f977 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
similarity index 90%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
index 2b739b4..5fbac9f 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooBarProviderType1.java
@@ -20,8 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 
 public class FooBarProviderType1 implements FooService, BarService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
similarity index 97%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
copy to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
index 3fe9bad..6abb0b1 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType1.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.osgi.framework.BundleContext;
 
 public class FooProviderType1 implements FooService {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
index 39f3918..a83cd7a 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn.java
@@ -20,7 +20,8 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
+
 
 public class FooProviderTypeDyn implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
index f5f233a..40f6698 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderTypeDyn2.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 
 public class FooProviderTypeDyn2 implements FooService {
 	
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation1.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation1.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation1.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation1.java
index 3ffab2f..46488a8 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation1.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation1.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component.inherited;
 
-import org.apache.felix.ipojo.test.scenarios.service.ChildInterface;
+import org.apache.felix.ipojo.test.scenarios.ps.service.ChildInterface;
 
 public class ProcessImplementation1 implements ChildInterface {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation2.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation2.java
similarity index 100%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation2.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation2.java
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation3.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation3.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation3.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation3.java
index cc576d8..d59adbd 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation3.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessImplementation3.java
@@ -20,7 +20,7 @@
 
 import java.util.Properties;
 
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 
 public class ProcessImplementation3 extends ProcessParentImplementation  implements FooService {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessParentImplementation.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessParentImplementation.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessParentImplementation.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessParentImplementation.java
index 69ebace..4872be4 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessParentImplementation.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/inherited/ProcessParentImplementation.java
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.ipojo.test.scenarios.component.inherited;
 
-import org.apache.felix.ipojo.test.scenarios.service.ChildInterface;
+import org.apache.felix.ipojo.test.scenarios.ps.service.ChildInterface;
 
 public class ProcessParentImplementation implements ChildInterface {
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java
similarity index 97%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java
index 6f615ae..4437f1b 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -33,7 +33,7 @@
 	ComponentInstance fooProvider3;
 
 	public void setUp() {
-		String type = "FooProviderType-Dyn";
+		String type = "PS-FooProviderType-Dyn";
 		
 		Properties p1 = new Properties();
 		p1.put("name", "FooProvider-1");
@@ -48,7 +48,7 @@
 		p2.put("intAProp", new int[] {1, 2, 3});
 		fooProvider2 = Utils.getComponentInstance(context, type, p2);
 		
-		String type2 = "FooProviderType-Dyn2";
+		String type2 = "PS-FooProviderType-Dyn2";
 		Properties p3 = new Properties();
 		p3.put("name", "FooProvider-3");
 		p3.put("int", new Integer(0));
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicPropsReconfiguration.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicPropsReconfiguration.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java
index baeaa9d..4384b23 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicPropsReconfiguration.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationException;
@@ -33,7 +33,7 @@
 	ComponentInstance fooProvider3;
 	
 	public void setUp() {		
-		String type2 = "FooProviderType-Dyn2";
+		String type2 = "PS-FooProviderType-Dyn2";
 		Properties p3 = new Properties();
 		p3.put("name", "FooProvider-3");
 		p3.put("int", new Integer(0));
@@ -75,7 +75,7 @@
     	}
     	
     	// Reconfiguration
-    	ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "FooProviderType-Dyn2");
+    	ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "PS-FooProviderType-Dyn2");
     	Factory fact = (Factory) context.getService(fact_ref);
     	Properties p3 = new Properties();
     	p3.put("name", "FooProvider-3");
@@ -136,7 +136,7 @@
     	assertNull("Check intAProp hidding (no value)", intAProp);
     	
     	//	Reconfiguration
-    	fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "FooProviderType-Dyn2");
+    	fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "PS-FooProviderType-Dyn2");
     	fact = (Factory) context.getService(fact_ref);
     	p3 = new Properties();
     	p3.put("name", "FooProvider-3");
@@ -207,7 +207,7 @@
 		}
 		
 		// Reconfiguration
-		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "FooProviderType-Dyn2");
+		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "PS-FooProviderType-Dyn2");
 		Factory fact = (Factory) context.getService(fact_ref);
 		Properties p3 = new Properties();
 		p3.put("name", "FooProvider-3");
@@ -268,7 +268,7 @@
 		assertNull("Check intAProp hidding (no value)", intAProp);
 		
 		//	Reconfiguration
-		fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "FooProviderType-Dyn2");
+		fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "PS-FooProviderType-Dyn2");
 		fact = (Factory) context.getService(fact_ref);
 		p3 = new Properties();
 		p3.put("name", "FooProvider-3");
@@ -339,7 +339,7 @@
 		}
 		
 		// Reconfiguration
-		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "FooProviderType-Dyn2");
+		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "PS-FooProviderType-Dyn2");
 		ManagedServiceFactory fact = (ManagedServiceFactory) context.getService(fact_ref);
 		Properties p3 = new Properties();
 		p3.put("int", new Integer(1));
@@ -399,7 +399,7 @@
 		assertNull("Check intAProp hidding (no value)", intAProp);
 		
 		//	Reconfiguration
-		fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "FooProviderType-Dyn2");
+		fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "PS-FooProviderType-Dyn2");
 		fact = (ManagedServiceFactory) context.getService(fact_ref);
 		p3 = new Properties();
 		p3.put("int", new Integer(1));
@@ -469,7 +469,7 @@
     	}
     	
     	// Reconfiguration
-    	ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "FooProviderType-Dyn2");
+    	ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "PS-FooProviderType-Dyn2");
     	ManagedServiceFactory fact = (ManagedServiceFactory) context.getService(fact_ref);
     	Properties p3 = new Properties();
     	p3.put("int", "1");
@@ -529,7 +529,7 @@
     	assertNull("Check intAProp hidding (no value)", intAProp);
     	
     	//	Reconfiguration
-    	fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "FooProviderType-Dyn2");
+    	fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName() , "PS-FooProviderType-Dyn2");
     	fact = (ManagedServiceFactory) context.getService(fact_ref);
     	p3 = new Properties();
     	p3.put("int", "1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/Exposition.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/Exposition.java
similarity index 92%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/Exposition.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/Exposition.java
index ee7aca2..69dca5d 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/Exposition.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/Exposition.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -38,23 +38,23 @@
 	public void setUp(){ 
 		Properties p1 = new Properties();
 		p1.put("name", "fooProviderSimple");
-		fooProviderSimple = Utils.getComponentInstance(context, "FooProviderType-1", p1);
+		fooProviderSimple = Utils.getComponentInstance(context, "PS-FooProviderType-1", p1);
 		
 		Properties p2 = new Properties();
 		p2.put("name", "fooProviderItf");
-		fooProviderItf = Utils.getComponentInstance(context, "FooProviderType-itf", p2);
+		fooProviderItf = Utils.getComponentInstance(context, "PS-FooProviderType-itf", p2);
 		
 		Properties p3 = new Properties();
 		p3.put("name", "fooProviderItfs");
-		fooBarProvider = Utils.getComponentInstance(context, "FooBarProviderType-1", p3);
+		fooBarProvider = Utils.getComponentInstance(context, "PS-FooBarProviderType-1", p3);
 		
 		Properties p4 = new Properties();
 		p4.put("name", "fooProviderItfs2");
-		fooBarProvider2 = Utils.getComponentInstance(context, "FooBarProviderType-2", p4);
+		fooBarProvider2 = Utils.getComponentInstance(context, "PS-FooBarProviderType-2", p4);
 		
 		Properties p5 = new Properties();
 		p5.put("name", "fooProviderItfs3");
-		fooBarProvider3 = Utils.getComponentInstance(context, "FooBarProviderType-3", p5);
+		fooBarProvider3 = Utils.getComponentInstance(context, "PS-FooBarProviderType-3", p5);
 		
 		assertNotNull("Check the instance creation of fooProviderSimple", fooProviderSimple);
 		assertNotNull("Check the instance creation of fooProviderItf", fooProviderItf);
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/InheritedTest.java
similarity index 90%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/InheritedTest.java
index a2c52f3..0653496 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/InheritedTest.java
@@ -16,16 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing.inherited;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.ChildInterface;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
-import org.apache.felix.ipojo.test.scenarios.service.ParentInterface1;
-import org.apache.felix.ipojo.test.scenarios.service.ParentInterface2;
-import org.apache.felix.ipojo.test.scenarios.service.ParentParentInterface;
+import org.apache.felix.ipojo.test.scenarios.ps.service.ChildInterface;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.ParentInterface1;
+import org.apache.felix.ipojo.test.scenarios.ps.service.ParentInterface2;
+import org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -34,14 +34,14 @@
     private Factory pi1, pi11, pi12, pi2, pi21, pi3;
     
     public void setUp() {
-        pi1 = Utils.getFactoryByName(context, "PI1");
-        pi11 = Utils.getFactoryByName(context, "PI1-1");
-        pi12 = Utils.getFactoryByName(context, "PI1-2");
+        pi1 = Utils.getFactoryByName(context, "PS-PI1");
+        pi11 = Utils.getFactoryByName(context, "PS-PI1-1");
+        pi12 = Utils.getFactoryByName(context, "PS-PI1-2");
         
-        pi2 = Utils.getFactoryByName(context, "PI2");
-        pi21 = Utils.getFactoryByName(context, "PI2-1");
+        pi2 = Utils.getFactoryByName(context, "PS-PI2");
+        pi21 = Utils.getFactoryByName(context, "PS-PI2-1");
         
-        pi3 = Utils.getFactoryByName(context, "PI3");
+        pi3 = Utils.getFactoryByName(context, "PS-PI3");
     }
     
     private boolean contains(String[] arr, String txt) {
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/ProvidedServiceTest.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/ProvidedServiceTest.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java
index efcd2da..21627d3 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/ProvidedServiceTest.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.architecture;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Properties;
 
@@ -28,16 +28,16 @@
 import org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceDescription;
 import org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandlerDescription;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.BarService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
-public class ProvidedServiceTest extends OSGiTestCase {
+public class ProvidedServiceArchitectureTest extends OSGiTestCase {
 	
 	
 	public void testExposition() {
-		String factName = "FooProviderType-1";
+		String factName = "PS-FooProviderType-1";
 		String compName = "FooProvider-1";
 		
 		// Get the factory to create a component instance
@@ -90,7 +90,7 @@
 	}
 	
 	public void testProps() {
-		String factName = "FooProviderType-3";
+		String factName = "PS-FooProviderType-3";
 		String compName = "FooProvider";
 		
 		// Get the factory to create a component instance
@@ -148,7 +148,7 @@
 	}
 	
 	public void testDoubleProviding() {
-		String factName = "FooBarProviderType-1";
+		String factName = "PS-FooBarProviderType-1";
 		String compName = "FooProvider";
 		
 		// Get the factory to create a component instance
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
similarity index 88%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
index d12c206..c5d8866 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
@@ -16,13 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
-import org.apache.felix.ipojo.test.scenarios.service.providing.inherited.InheritedTest;
 import org.osgi.framework.BundleContext;
 
 public class ProvidedServiceTestSuite extends TestSuite {
@@ -33,10 +32,10 @@
 		ots.addTestSuite(SimplePS.class);
 		ots.addTestSuite(StaticProps.class);
 		ots.addTestSuite(DynamicProps.class);
-		ots.addTestSuite(FactoryProps.class);
 		ots.addTestSuite(StaticPropsReconfiguration.class);
 		ots.addTestSuite(DynamicPropsReconfiguration.class);
 		ots.addTestSuite(InheritedTest.class);
+		ots.addTestSuite(ProvidedServiceArchitectureTest.class);
 		return ots;
 	}
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/SimplePS.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/SimplePS.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java
index 8e52b1c..6f1f8c2 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/SimplePS.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -31,7 +31,7 @@
 public class SimplePS extends OSGiTestCase {
 	
 	public void testPS() {
-		String factName = "FooProviderType-1";
+		String factName = "PS-FooProviderType-1";
 		String compName = "FooProvider-1";
 		ServiceReference[] refs = null;
 		
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/StaticProps.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/StaticProps.java
similarity index 95%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/StaticProps.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/StaticProps.java
index 4894900..afcfe08 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/StaticProps.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/StaticProps.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 
@@ -32,7 +32,7 @@
 	ComponentInstance fooProvider2;
 	
 	public void setUp() {
-		String type = "FooProviderType-2";
+		String type = "PS-FooProviderType-2";
 		
 		Properties p1 = new Properties();
 		p1.put("name", "FooProvider-1");
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/StaticPropsReconfiguration.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/StaticPropsReconfiguration.java
similarity index 96%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/StaticPropsReconfiguration.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/StaticPropsReconfiguration.java
index 215d41e..5f9baf9 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/StaticPropsReconfiguration.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/StaticPropsReconfiguration.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service.providing;
+package org.apache.felix.ipojo.test.scenarios.ps;
 
 import java.util.Dictionary;
 import java.util.Properties;
@@ -24,7 +24,7 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationException;
@@ -36,7 +36,7 @@
 	ComponentInstance fooProvider2;
 
 	public void setUp() {
-		String type = "FooProviderType-2";
+		String type = "PS-FooProviderType-2";
 		
 		Properties p1 = new Properties();
 		p1.put("name", "FooProvider-1");
@@ -86,7 +86,7 @@
 		}
 
 		// Reconfiguration
-		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-2");
+		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName(), "PS-FooProviderType-2");
 		Dictionary reconf = new Properties();
 		reconf.put("name", "FooProvider-1");
 		reconf.put("int", new Integer(5));
@@ -157,7 +157,7 @@
 		}
 		
 		// Reconfiguration
-		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName(), "FooProviderType-2");
+		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName(), "PS-FooProviderType-2");
 		Dictionary reconf = new Properties();
 		reconf.put("name", "FooProvider-2");
 		reconf.put("int", new Integer(5));
@@ -223,7 +223,7 @@
 		}
 
 		// Reconfiguration
-		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), "FooProviderType-2");
+		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), "PS-FooProviderType-2");
 		Dictionary reconf = new Properties();
 		reconf.put("int", new Integer(5));
 		reconf.put("long", new Long(43));
@@ -293,7 +293,7 @@
 		}
 		
 		// Reconfiguration
-		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), "FooProviderType-2");
+		ServiceReference fact_ref = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), "PS-FooProviderType-2");
 		Dictionary reconf = new Properties();
 		reconf.put("int", new Integer(5));
 		reconf.put("long", new Long(43));
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/BarService.java
similarity index 93%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
copy to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/BarService.java
index 727e845..7ccee67 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/BarService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/CheckService.java
similarity index 94%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/CheckService.java
index 62f254c..f500f79 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/CheckService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ChildInterface.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ChildInterface.java
index cb7c6c1..b3d8974 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ChildInterface.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 public interface ChildInterface extends ParentInterface1, ParentInterface2 {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/FooService.java
similarity index 94%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
copy to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/FooService.java
index 78693cf..7bf3e25 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/FooService.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 import java.util.Properties;
 
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentInterface1.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentInterface1.java
index f70daf3..f032f3e 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentInterface1.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 public interface ParentInterface1 extends ParentParentInterface {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentInterface2.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentInterface2.java
index 78c3d35..8369a14 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentInterface2.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 public interface ParentInterface2 {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentParentInterface.java
similarity index 93%
rename from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java
rename to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentParentInterface.java
index 29767d4..d9fa406 100644
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/service/ParentParentInterface.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.ipojo.test.scenarios.service;
+package org.apache.felix.ipojo.test.scenarios.ps.service;
 
 public interface ParentParentInterface {
     
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
similarity index 100%
copy from ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
copy to ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
diff --git a/ipojo/tests/tests.core.service.providing/src/main/resources/metadata.xml b/ipojo/tests/tests.core.service.providing/src/main/resources/metadata.xml
new file mode 100644
index 0000000..3588872
--- /dev/null
+++ b/ipojo/tests/tests.core.service.providing/src/main/resources/metadata.xml
@@ -0,0 +1,135 @@
+<ipojo>
+	<!-- Simple provider  -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="PS-FooProviderType-1" architecture="true">
+		<provides />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="PS-FooProviderType-itf" architecture="true">
+		<provides
+			interface="org.apache.felix.ipojo.test.scenarios.ps.service.FooService" />
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		factory="PS-FooProviderType-3" architecture="true">
+		<provides>
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+			<property name="baz" type="java.lang.String" />
+		</provides>
+		<properties propagation="true">
+			<property name="foo" field="m_foo" />
+			<property name="bar" field="m_bar" />
+		</properties>
+	</component>
+	
+	<!-- Providers providing 2 services -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+		factory="PS-FooBarProviderType-1" architecture="true">
+		<provides />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+		factory="PS-FooBarProviderType-2" architecture="true">
+		<provides
+			interface="{org.apache.felix.ipojo.test.scenarios.ps.service.FooService, org.apache.felix.ipojo.test.scenarios.ps.service.BarService }" />
+	</component>
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+		factory="PS-FooBarProviderType-3" architecture="true">
+		<provides
+			interface="{org.apache.felix.ipojo.test.scenarios.ps.service.FooService}">
+			<property name="baz" type="java.lang.String" value="foo" />
+		</provides>
+		<provides
+			interface="{org.apache.felix.ipojo.test.scenarios.ps.service.BarService}">
+			<property name="baz" type="java.lang.String" value="bar" />
+		</provides>
+	</component>
+	
+
+	<!-- Provider with dynamic property -->
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
+		name="PS-FooProviderType-Dyn" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="2" />
+			<property name="boolean" field="boolProp" value="false" />
+			<property name="string" field="strProp" value="foo" />
+			<property name="strAProp" field="strAProp"
+				value="{foo, bar}" />
+			<property name="intAProp" field="intAProp" value="{ 1,2,3}" />
+		</provides>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+		name="PS-FooProviderType-2" architecture="true">
+		<provides>
+			<property name="int" type="int" value="2" />
+			<property name="long" type="long" value="40" />
+			<property name="string" type="java.lang.String" value="foo" />
+			<property name="strAProp" type="java.lang.String[]"
+				value="{foo, bar}" />
+			<property name="intAProp" type="int[]" value="{1,2,3}" />
+		</provides>
+	</component>
+	
+	<component
+		className="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
+		name="PS-FooProviderType-Dyn2" factory="true" architecture="true">
+		<provides>
+			<property name="int" field="intProp" value="4" />
+			<property name="boolean" field="boolProp" />
+			<property name="string" field="strProp" />
+			<property name="strAProp" field="strAProp" />
+			<property name="intAProp" field="intAProp"
+				value="{1, 2,3 }" />
+		</provides>
+	</component>
+	
+	<!--  Inherited Provides -->
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
+		name="PS-PI1" architecture="true">
+		<provides />
+	</component>
+
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
+		name="PS-PI1-1" architecture="true">
+		<provides
+			interface="org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface" />
+	</component>
+
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
+		name="PS-PI1-2" architecture="true">
+		<provides
+			interface="{org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface, org.apache.felix.ipojo.test.scenarios.ps.service.ParentInterface2}" />
+	</component>
+
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
+		name="PS-PI2" architecture="true">
+		<provides />
+	</component>
+
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
+		name="PS-PI2-1" architecture="true">
+		<provides
+			interface="org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface" />
+	</component>
+
+	<component
+		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"
+		name="PS-PI3" architecture="true">
+		<provides />
+	</component>
+</ipojo>
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/IPOJOTestSuite.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/IPOJOTestSuite.java
deleted file mode 100644
index b9fbeb9..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/IPOJOTestSuite.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test;
-
-import junit.framework.Test;
-
-import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
-import org.apache.felix.ipojo.test.scenarios.architecture.ArchitectureTestSuite;
-import org.apache.felix.ipojo.test.scenarios.bad.BadTestSuite;
-import org.apache.felix.ipojo.test.scenarios.configuration.ConfigurationTestSuite;
-import org.apache.felix.ipojo.test.scenarios.controller.LifeCycleControllerTestSuite;
-import org.apache.felix.ipojo.test.scenarios.core.CoreTestSuite;
-import org.apache.felix.ipojo.test.scenarios.dependency.DependencyTestSuite;
-import org.apache.felix.ipojo.test.scenarios.factory.FactoryTestSuite;
-import org.apache.felix.ipojo.test.scenarios.handler.ExternalHandlerTestSuite;
-import org.apache.felix.ipojo.test.scenarios.lifecycle.LifeCycleCallbackTest;
-import org.apache.felix.ipojo.test.scenarios.manipulation.ManipulationTestSuite;
-import org.apache.felix.ipojo.test.scenarios.service.providing.ProvidedServiceTestSuite;
-import org.osgi.framework.BundleContext;
-
-public class IPOJOTestSuite {
-    
-    public static Test suite(BundleContext bc) {
-        OSGiTestSuite ots = new OSGiTestSuite("IPojo Core Test Suite", bc);
-        ots.addTest(ManipulationTestSuite.suite(bc));
-        ots.addTest(CoreTestSuite.suite(bc));
-        ots.addTest(FactoryTestSuite.suite(bc));
-        ots.addTest(ProvidedServiceTestSuite.suite(bc));
-        ots.addTest(LifeCycleControllerTestSuite.suite(bc));
-        ots.addTest(LifeCycleCallbackTest.suite(bc));
-        ots.addTest(DependencyTestSuite.suite(bc));
-        ots.addTest(ArchitectureTestSuite.suite(bc));
-        ots.addTest(ConfigurationTestSuite.suite(bc));
-        ots.addTest(ExternalHandlerTestSuite.suite(bc));
-        ots.addTest(BadTestSuite.suite(bc));
-        return ots;
-    }
-
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/log/DefaultLogImpl.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/log/DefaultLogImpl.java
deleted file mode 100644
index bbde9eb..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/log/DefaultLogImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.log;
-
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-
-public class DefaultLogImpl implements LogService {
-    
-
-    public void log(int arg0, String arg1) {
-        dispatch(arg0, arg1);
-    }
-
-    public void log(int arg0, String arg1, Throwable arg2) {
-        dispatch(arg0, arg1 + " (" + arg2.getMessage() + ")");
-    }
-
-    public void log(ServiceReference arg0, int arg1, String arg2) {
-        dispatch(arg1, arg2 + " (" + arg0.toString() + ")");
-    }
-
-    public void log(ServiceReference arg0, int arg1, String arg2, Throwable arg3) {
-        dispatch(arg1, arg2 + " (" + arg0.toString() + ")" + " (" + arg3.getMessage() + ")");
-    }
-    
-    
-    private void dispatch(int level, String message) {
-        switch (level) {
-            case LogService.LOG_DEBUG:
-                System.out.println("[DEBUG] " + message);
-                break;
-            case LogService.LOG_INFO:
-                System.out.println("[INFO] " + message);
-                break;
-            case LogService.LOG_WARNING:
-                System.out.println("[WARNING] " + message);
-                break; 
-            case LogService.LOG_ERROR:
-                System.out.println("[ERROR] " + message);
-                break;
-            default:
-                System.out.println("[" + level + "] " + message);
-                break;
-        }
-    }
-
-
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/log/LogImpl.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/log/LogImpl.java
deleted file mode 100644
index 9f23faf..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/log/LogImpl.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.log;
-
-import java.util.Enumeration;
-import java.util.Vector;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogEntry;
-import org.osgi.service.log.LogListener;
-import org.osgi.service.log.LogReaderService;
-import org.osgi.service.log.LogService;
-
-public class LogImpl implements LogService, LogReaderService {
-    
-    Vector m_messages = new Vector();
-
-    public void log(int arg0, String arg1) {
-       add(new LogEntryImpl(arg0, arg1, null, null));
-    }
-
-    public void log(final int arg0, final String arg1, final Throwable arg2) {
-        Runnable runnable = new Runnable() {
-            public void run() {
-                add(new LogEntryImpl(arg0, arg1, arg2, null));
-            }
-        };
-        Thread thread = new Thread(runnable);
-        thread.start();
-    }
-
-    public void log(final ServiceReference arg0, final int arg1, final String arg2) {
-        Runnable runnable = new Runnable() {
-            public void run() {
-                add(new LogEntryImpl(arg1, arg2, null, arg0));
-            }
-        };
-        Thread thread = new Thread(runnable);
-        thread.start();
-    }
-
-    public void log(final ServiceReference arg0, final int arg1, final String arg2, final Throwable arg3) {
-//        Runnable runnable = new Runnable() {
-//            public void run() {
-//                add(new LogEntryImpl(arg1, arg2, arg3, arg0));
-//            }
-//        };
-//        Thread thread = new Thread(runnable);
-//        thread.start();
-    }
-    
-    private void add(LogEntry entry) {
-        m_messages.add(entry);
-    }
-
-    public void addLogListener(LogListener arg0) {
-        throw new UnsupportedOperationException("Log Listener not supported");
-        
-    }
-
-    public Enumeration getLog() {
-       return m_messages.elements();
-    }
-
-    public void removeLogListener(LogListener arg0) {
-        throw new UnsupportedOperationException("Log Listener not supported");
-        
-    }
-    
-    private class LogEntryImpl implements LogEntry {
-        
-        private int level;
-        private String message;
-        private Throwable exception;
-        private ServiceReference reference;
-        private long time;
-        
-
-        LogEntryImpl(int l, String m, Throwable e, ServiceReference ref) {
-            level = l;
-            message = m;
-            exception = e;
-            reference = ref;
-            time = System.currentTimeMillis();
-        }
-        
-        
-        public Bundle getBundle() {
-           return null;
-        }
-
-        public Throwable getException() {
-            return exception;
-        }
-
-        public int getLevel() {
-            return level;
-        }
-
-        public String getMessage() {
-            return message;
-        }
-
-        public ServiceReference getServiceReference() {
-            return reference;
-        }
-
-        public long getTime() {
-            return time;
-        }
-        
-    }
-
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/ArchitectureTestSuite.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/ArchitectureTestSuite.java
deleted file mode 100644
index ef287b6..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/architecture/ArchitectureTestSuite.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.scenarios.architecture;
-
-import junit.framework.Test;
-
-import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
-import org.osgi.framework.BundleContext;
-
-public class ArchitectureTestSuite {
-
-    public static Test suite(BundleContext bc) {
-		OSGiTestSuite ots = new OSGiTestSuite("Architecture Test Suite", bc);
-		ots.addTestSuite(ProvidedServiceTest.class);
-		ots.addTestSuite(DependencyTest.class);
-		return ots;
-	}
-
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/CheckService2Provider.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/CheckService2Provider.java
deleted file mode 100644
index 9202b1d..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/A123/CheckService2Provider.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.scenarios.component.A123;
-
-import org.apache.felix.ipojo.test.scenarios.service.A123.CheckService2;
-
-public class CheckService2Provider implements CheckService2 {
-
-	public boolean check() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Baz2CheckProvider.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Baz2CheckProvider.java
deleted file mode 100644
index 1e7cb1d..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Baz2CheckProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.scenarios.component;
-
-import java.util.Properties;
-
-import org.apache.felix.ipojo.test.scenarios.service.BazService;
-import org.apache.felix.ipojo.test.scenarios.service.CheckService;
-import org.apache.felix.ipojo.test.scenarios.service.FooService;
-import org.osgi.framework.ServiceReference;
-
-public class Baz2CheckProvider implements CheckService {
-	
-	BazService fs;
-	
-	int simpleB = 0;
-	int objectB = 0;
-	int refB = 0;
-	int simpleU = 0;
-	int objectU = 0;
-	int refU = 0;
-
-	public boolean check() {
-		return fs.foo();
-	}
-
-	public Properties getProps() {
-		Properties props = new Properties();
-		props.put("result", new Boolean(fs.foo()));
-		props.put("voidB", new Integer(simpleB));
-		props.put("objectB", new Integer(objectB));
-		props.put("refB", new Integer(refB));
-		props.put("voidU", new Integer(simpleU));
-		props.put("objectU", new Integer(objectU));
-		props.put("refU", new Integer(refU));
-		props.put("boolean", new Boolean(fs.getBoolean()));
-		props.put("int", new Integer(fs.getInt()));
-		props.put("long", new Long(fs.getLong()));
-		props.put("double", new Double(fs.getDouble()));
-		if(fs.getObject() != null) { props.put("object", fs.getObject()); }
-		
-		return props;
-	}
-	
-	private void voidBind() {
-		simpleB++;
-	}
-	private void voidUnbind() {
-		simpleU++;
-	}
-	
-	protected void objectBind(Object o) {
-		if(o != null && o instanceof FooService) { objectB++; }
-	}
-	protected void objectUnbind(Object o) {
-		if(o != null && o instanceof FooService) { objectU++; }
-	}
-	
-	public void refBind(ServiceReference sr) {
-		if(sr != null) { refB++; }
-	}
-	public void refUnbind(ServiceReference sr) {
-		if(sr != null) { refU++; }
-	}
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/CoreTestSuite.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/CoreTestSuite.java
deleted file mode 100644
index bc87ae4..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/core/CoreTestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.scenarios.core;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
-import org.osgi.framework.BundleContext;
-
-public class CoreTestSuite extends TestSuite {
-	
-	
-	public static Test suite(BundleContext bc) {
-		OSGiTestSuite ots = new OSGiTestSuite("Contre Test Suite", bc);
-		ots.addTestSuite(POJOCreation.class);
-		ots.addTestSuite(ComponentDesc.class);
-		return ots;
-	}
-
-}
diff --git a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/FactoryTestSuite.java b/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/FactoryTestSuite.java
deleted file mode 100644
index 4c45c4c..0000000
--- a/ipojo/tests/tests.core/src/main/java/org/apache/felix/ipojo/test/scenarios/factory/FactoryTestSuite.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.felix.ipojo.test.scenarios.factory;
-
-import junit.framework.Test;
-
-import org.apache.felix.ipojo.junit4osgi.OSGiTestSuite;
-import org.osgi.framework.BundleContext;
-
-public class FactoryTestSuite {
-
-	public static Test suite(BundleContext bc) {
-		OSGiTestSuite ots = new OSGiTestSuite("Factories Test Suite", bc);
-		
-		ots.addTestSuite( UnacceptableConfigurationTest.class);
-		ots.addTestSuite( ConfigAdminTest.class);
-		ots.addTestSuite( ObedienceTest.class);
-		
-		return ots;
-	}
-
-}
