diff --git a/ipojo/tests/api/pom.xml b/ipojo/tests/api/pom.xml
index ba01660..89457c1 100644
--- a/ipojo/tests/api/pom.xml
+++ b/ipojo/tests/api/pom.xml
@@ -54,29 +54,29 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.api</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 
 		<!-- For external handlermanagement -->
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.handler.whiteboard</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 
 	<!--
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java
index e2b3128..93a72a9 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/CompositeTest.java
@@ -3,9 +3,13 @@
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.junit.Assert.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
+import static org.ops4j.pax.exam.MavenUtils.asInProject;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.ConfigurationException;
@@ -32,34 +36,36 @@
 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
-import static org.ops4j.pax.exam.MavenUtils.*;
 
 
 @RunWith( JUnit4TestRunner.class )
 public class CompositeTest {
-    
+
     @Inject
     private BundleContext context;
-    
+
     private OSGiHelper osgi;
-    
+
     private IPOJOHelper ipojo;
-    
+
     @Before
     public void init() {
         osgi = new OSGiHelper(context);
         ipojo = new IPOJOHelper(context);
     }
-    
+
     @After
     public void stop() {
         ipojo.dispose();
         osgi.dispose();
     }
-    
+
     @Configuration
-    public static Option[] configure() {    
+    public static Option[] configure() {
         Option[] opt =  options(
+                felix(),
+                equinox(),
+                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.composite").version(asInProject()),
@@ -74,63 +80,63 @@
        // Define the component types
        PrimitiveComponentType prov = createAProvider();
        PrimitiveComponentType cons = createAConsumer();
-       
+
        CompositeComponentType type = new CompositeComponentType()
            .setBundleContext(context)
            .setComponentTypeName("comp1")
            .addInstance(new Instance(prov.getFactory().getName()))
            .addInstance(new Instance(cons.getFactory().getName()));
-       
+
        ComponentInstance ci = type.createInstance();
-              
+
        assertThat("ci is valid", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Stop cons
        cons.stop();
        assertThat("ci is invalid", ci.getState(), is(ComponentInstance.INVALID));
-       
+
        // Restart cons
        cons.start();
        assertThat("ci is valid - 2", ci.getState(), is(ComponentInstance.VALID));
 
    }
-   
+
    @Test
    public void createACompositeWithAnInstantiatedService() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
        // Define the component types
        PrimitiveComponentType prov = createAProvider();
        prov.start();
        PrimitiveComponentType cons = createAConsumer();
-       
-       ServiceReference[] refs = osgi.getServiceReferences(Factory.class.getName(), 
+
+       ServiceReference[] refs = osgi.getServiceReferences(Factory.class.getName(),
                "(component.providedServiceSpecifications=" + Foo.class.getName() +")");
        assertThat(refs.length, is(not(0)));
-       
+
        Factory factory = (Factory) osgi.getServiceObject(refs[0]);
        System.out.println(factory.getComponentDescription().getDescription());
-       
+
        CompositeComponentType type = new CompositeComponentType()
            .setBundleContext(context)
            .setComponentTypeName("comp2")
            .addSubService(new InstantiatedService().setSpecification(Foo.class.getName()))
            .addInstance(new Instance(cons.getFactory().getName()));
-       
+
        ComponentInstance ci = type.createInstance();
-       
+
        System.out.println(ci.getInstanceDescription().getDescription());
-       
+
        assertThat("ci is valid", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Stop prov
        prov.stop();
        assertThat("ci is invalid", ci.getState(), is(ComponentInstance.INVALID));
-       
+
        // Restart prov
        prov.start();
        assertThat("ci is valid - 2", ci.getState(), is(ComponentInstance.VALID));
 
    }
-   
+
    @Test
    public void createACompositeWithAnOptionalInstantiatedService() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
        // Define the component types
@@ -141,55 +147,55 @@
            .setBundleContext(context)
            .setComponentTypeName("comp3")
            .addSubService(new InstantiatedService().setSpecification(Foo.class.getName()).setOptional(true));
-       
+
        ComponentInstance ci = type.createInstance();
-              
+
        assertThat("ci is valid", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Stop prov
        prov.stop();
        assertThat("ci is valid - 1", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Restart prov
        prov.start();
        assertThat("ci is valid - 2", ci.getState(), is(ComponentInstance.VALID));
 
    }
-   
+
    @Test
    public void createACompositeWithAnImportedService() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
        // Define the component types
        PrimitiveComponentType prov = createAProvider();
        prov.createInstance();
        PrimitiveComponentType cons = createAConsumer();
-       
-       ServiceReference[] refs = osgi.getServiceReferences(Factory.class.getName(), 
+
+       ServiceReference[] refs = osgi.getServiceReferences(Factory.class.getName(),
                "(component.providedServiceSpecifications=" + Foo.class.getName() +")");
        assertThat(refs.length, is(not(0)));
-       
+
        CompositeComponentType type = new CompositeComponentType()
            .setBundleContext(context)
            .setComponentTypeName("comp2")
            .addSubService(new ImportedService().setSpecification(Foo.class.getName()))
            .addInstance(new Instance(cons.getFactory().getName()));
-       
+
        ComponentInstance ci = type.createInstance();
-       
+
        System.out.println(ci.getInstanceDescription().getDescription());
-       
+
        assertThat("ci is valid", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Stop prov
        prov.stop();
        assertThat("ci is invalid", ci.getState(), is(ComponentInstance.INVALID));
-       
+
        // Restart prov
        prov.start();
        prov.createInstance();
        assertThat("ci is valid - 2", ci.getState(), is(ComponentInstance.VALID));
 
    }
-   
+
    @Test
    public void createACompositeWithAnOptionalImportedService() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
        // Define the component types
@@ -200,22 +206,22 @@
            .setBundleContext(context)
            .setComponentTypeName("comp3")
            .addSubService(new ImportedService().setSpecification(Foo.class.getName()).setOptional(true));
-       
+
        ComponentInstance ci = type.createInstance();
-              
+
        assertThat("ci is valid", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Stop prov
        prov.stop();
        assertThat("ci is valid - 1", ci.getState(), is(ComponentInstance.VALID));
-       
+
        // Restart prov
        prov.start();
        prov.createInstance();
        assertThat("ci is valid - 2", ci.getState(), is(ComponentInstance.VALID));
 
    }
-   
+
    @Test
    public void createACompositeWithExportingAService() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
        // Define the component types
@@ -223,25 +229,25 @@
        prov.start();
        PrimitiveComponentType cons = createAConsumer();
        ComponentInstance c = cons.createInstance();
-       
+
          CompositeComponentType type = new CompositeComponentType()
            .setBundleContext(context)
            .setComponentTypeName("compExport")
            .addSubService(new InstantiatedService().setSpecification(Foo.class.getName()))
            .addService(new ExportedService().setSpecification(Foo.class.getName()));
-       
+
        ComponentInstance ci = type.createInstance();
-       
+
        assertThat("ci is valid", ci.getState(), is(ComponentInstance.VALID));
        assertThat("c is valid", c.getState(), is(ComponentInstance.VALID));
-       
-       
+
+
        // Stop prov
        prov.stop();
        assertThat("ci is invalid", ci.getState(), is(ComponentInstance.INVALID));
        assertThat("c is invalid", c.getState(), is(ComponentInstance.INVALID));
 
-       
+
        // Restart prov
        prov.start();
        assertThat("ci is valid - 2", ci.getState(), is(ComponentInstance.VALID));
@@ -249,7 +255,7 @@
 
 
    }
-    
+
     private PrimitiveComponentType createAProvider() {
         return new PrimitiveComponentType()
         .setBundleContext(context)
@@ -257,7 +263,7 @@
         .setPublic(true)
         .addService(new Service()); // Provide the FooService
     }
-    
+
     private PrimitiveComponentType createAConsumer() {
         return new PrimitiveComponentType()
         .setBundleContext(context)
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java
index 59f4e0d..2c2038c 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/ExternalHandlerTest.java
@@ -3,6 +3,9 @@
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.junit.Assert.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
@@ -26,29 +29,32 @@
 
 @RunWith( JUnit4TestRunner.class )
 public class ExternalHandlerTest {
-    
+
     @Inject
     private BundleContext context;
-    
+
     private OSGiHelper osgi;
-    
+
     private IPOJOHelper ipojo;
-    
+
     @Before
     public void init() {
         osgi = new OSGiHelper(context);
         ipojo = new IPOJOHelper(context);
     }
-    
+
     @After
     public void stop() {
         ipojo.dispose();
         osgi.dispose();
     }
-    
+
     @Configuration
-    public static Option[] configure() {    
+    public static Option[] configure() {
         Option[] opt =  options(
+                felix(),
+                equinox(),
+                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.api").version(asInProject()),
@@ -57,7 +63,7 @@
                 );
         return opt;
     }
-    
+
     @Test
     public void createAHost() throws Exception {
         PrimitiveComponentType type = createAWhiteboardHost();
@@ -66,7 +72,7 @@
         HandlerDescription hd = ci.getInstanceDescription().getHandlerDescription(Whiteboard.NAMESPACE + ":" + Whiteboard.NAME);
         assertThat (hd, is (notNullValue()));
     }
-    
+
     @Test
     public void createDoubleHost() throws Exception {
         PrimitiveComponentType type = createASecondWhiteboardHost();
@@ -75,7 +81,7 @@
         HandlerDescription hd = ci.getInstanceDescription().getHandlerDescription(Whiteboard.NAMESPACE + ":" + Whiteboard.NAME);
         assertThat (hd, is (notNullValue()));
     }
-    
+
     private PrimitiveComponentType createAWhiteboardHost() {
         return new PrimitiveComponentType()
         .setBundleContext(context)
@@ -86,7 +92,7 @@
             .setFilter("(foo=foo)")
          );
     }
-    
+
     private PrimitiveComponentType createASecondWhiteboardHost() {
         return new PrimitiveComponentType()
         .setBundleContext(context)
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java
index b954a27..6ecfa68 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/PrimitiveComponentTest.java
@@ -4,6 +4,9 @@
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
@@ -57,6 +60,9 @@
     @Configuration
     public static Option[] configure() {
         Option[] opt =  options(
+                felix(),
+                equinox(),
+                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.api").version(asInProject())
diff --git a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java
index ecb9923..1e4e3f4 100644
--- a/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java
+++ b/ipojo/tests/api/src/test/java/org/apache/felix/ipojo/tests/api/SingletonComponentTest.java
@@ -5,6 +5,9 @@
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
@@ -36,29 +39,32 @@
 
 @RunWith( JUnit4TestRunner.class )
 public class SingletonComponentTest {
-    
+
     @Inject
     private BundleContext context;
-    
+
     private OSGiHelper osgi;
-    
+
     private IPOJOHelper ipojo;
-    
+
     @Before
     public void init() {
         osgi = new OSGiHelper(context);
         ipojo = new IPOJOHelper(context);
     }
-    
+
     @After
     public void stop() {
         ipojo.dispose();
         osgi.dispose();
     }
-    
+
     @Configuration
-    public static Option[] configure() {    
+    public static Option[] configure() {
         Option[] opt =  options(
+                felix(),
+                equinox(),
+                knopflerfish(),
                 provision(
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo.api").version(asInProject())
@@ -81,7 +87,7 @@
         assertThat(ref, is(notNullValue()));
 
     }
-    
+
     @Test
     public void killTheFactory() throws Exception {
         assertThat( context, is( notNullValue() ) );
@@ -99,7 +105,7 @@
                 .getInstanceName());
         assertThat(ref, is(nullValue()));
     }
-    
+
     @Test
     public void createAServiceCons() throws Exception {
         assertThat( context, is( notNullValue() ) );
@@ -111,77 +117,77 @@
                 is(ComponentInstance.INVALID));
 
     }
-    
+
     @Test
     public void createBoth() throws Exception {
         ComponentInstance cons = createAConsumer().create();
         // cons is invalid
         assertThat("cons is invalid", cons.getState(), is(ComponentInstance.INVALID));
-                
+
         ComponentInstance prov = createAProvider().create();
         assertThat("prov is valid", prov.getState(), is(ComponentInstance.VALID));
         assertThat("cons is valid", cons.getState(), is(ComponentInstance.VALID));
 
     }
-    
+
     @Test
     public void createTwoCons() throws Exception {
         ComponentInstance cons1 = createAConsumer().create();
         // cons is invalid
         assertThat("cons is invalid", cons1.getState(), is(ComponentInstance.INVALID));
-                
+
         ComponentInstance prov = createAProvider().create();
         assertThat("prov is valid", prov.getState(), is(ComponentInstance.VALID));
         assertThat("cons is valid", cons1.getState(), is(ComponentInstance.VALID));
-        
+
         ComponentInstance cons2 = createAnOptionalConsumer().create();
-     
+
         assertThat("cons2 is valid", cons2.getState(), is(ComponentInstance.VALID));
-        
+
         prov.stop();
         assertThat("cons is invalid", cons1.getState(), is(ComponentInstance.INVALID));
         assertThat("cons2 is valid", cons2.getState(), is(ComponentInstance.VALID));
     }
-    
+
     @Test
     @Ignore
     public void setObject() throws Exception {
         ComponentInstance cons = createAConsumer().setObject(new MyComponentImpl(5)).create();
         // cons is invalid
         assertThat("cons is invalid", cons.getState(), is(ComponentInstance.INVALID));
-                
+
         ComponentInstance prov = createAProvider().create();
         assertThat("prov is valid", prov.getState(), is(ComponentInstance.VALID));
         assertThat("cons is valid", cons.getState(), is(ComponentInstance.VALID));
-        
+
     }
-    
+
     private SingletonComponentType createAProvider() {
         PrimitiveComponentType type =  new SingletonComponentType()
         .setBundleContext(context)
         .setClassName(FooImpl.class.getName())
         .addService(new Service()); // Provide the FooService
-        
+
         return (SingletonComponentType) type;
     }
-    
+
     private SingletonComponentType createAConsumer() {
         PrimitiveComponentType type =  new SingletonComponentType()
         .setBundleContext(context)
         .setClassName(org.example.service.impl.MyComponentImpl.class.getName())
         .addDependency(new Dependency().setField("myFoo"))
         .setValidateMethod("start");
-        
+
         return (SingletonComponentType) type;
     }
-    
+
     private SingletonComponentType createAnOptionalConsumer() {
         PrimitiveComponentType type =  new SingletonComponentType()
         .setBundleContext(context)
         .setClassName(org.example.service.impl.MyComponentImpl.class.getName())
         .addDependency(new Dependency().setField("myFoo").setOptional(true))
         .setValidateMethod("start");
-        
+
         return (SingletonComponentType) type;
 
     }
diff --git a/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml b/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml
index 4629898..c68a99c 100644
--- a/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml
+++ b/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/pom.xml
@@ -23,7 +23,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>xerces</groupId>
diff --git a/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/src/main/java/org/apache/felix/ipojo/tinybundles/BundleAsiPOJO.java b/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/src/main/java/org/apache/felix/ipojo/tinybundles/BundleAsiPOJO.java
index ee37e3d..0228542 100644
--- a/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/src/main/java/org/apache/felix/ipojo/tinybundles/BundleAsiPOJO.java
+++ b/ipojo/tests/bundleAsiPOJO/bundleAsiPOJO/src/main/java/org/apache/felix/ipojo/tinybundles/BundleAsiPOJO.java
@@ -60,7 +60,7 @@
                 }
             }
             e.printStackTrace();
-            throw new RuntimeException(e.getMessage());
+            throw new RuntimeException(e.getMessage() + " : " + list);
         }
 
     }
diff --git a/ipojo/tests/bundleAsiPOJO/tests/consumer.xml b/ipojo/tests/bundleAsiPOJO/tests/consumer.xml
index c7f6d94..59f2924 100644
--- a/ipojo/tests/bundleAsiPOJO/tests/consumer.xml
+++ b/ipojo/tests/bundleAsiPOJO/tests/consumer.xml
@@ -1,3 +1,5 @@
-<ipojo>
-<instance component="org.apache.felix.ipojo.pax.tinybundles.tests.impl.Consumer"/>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
+	xmlns="org.apache.felix.ipojo">
+		<instance component="org.apache.felix.ipojo.pax.tinybundles.tests.impl.Consumer"/>
 </ipojo>
\ No newline at end of file
diff --git a/ipojo/tests/bundleAsiPOJO/tests/pom.xml b/ipojo/tests/bundleAsiPOJO/tests/pom.xml
index 5b86599..c7bbb9f 100644
--- a/ipojo/tests/bundleAsiPOJO/tests/pom.xml
+++ b/ipojo/tests/bundleAsiPOJO/tests/pom.xml
@@ -4,7 +4,7 @@
   <groupId>ipojo.tests</groupId>
   <artifactId>org.apache.felix.ipojo.tinybundle.bundleAsiPOJO.test</artifactId>
   <packaging>jar</packaging>
-  <version>0.9.0-SNAPSHOT</version>
+  <version>1.3.0-SNAPSHOT</version>
   <name>bundleAsiPOJO Tests</name>
   <build>
 		<plugins>
@@ -98,19 +98,21 @@
 	<dependency>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>org.apache.felix.ipojo.tinybundles.bundleAsiPOJO</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>${pom.version}</version>
 	</dependency>
 	<dependency>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>org.apache.felix.ipojo.annotations</artifactId>
-		<version>1.2.0</version>
+		<version>${pom.version}</version>
+	</dependency>
+	<dependency>
+		<groupId>org.apache.felix</groupId>
+		<artifactId>org.apache.felix.ipojo</artifactId>
+		<version>${pom.version}</version>
 	</dependency>
 
 	</dependencies>
 
-
-
-
 	<repositories>
 		<repository>
 			<id>ops4j.releases</id>
diff --git a/ipojo/tests/bundleAsiPOJO/tests/provider.xml b/ipojo/tests/bundleAsiPOJO/tests/provider.xml
index a76b7cb..00913ec 100644
--- a/ipojo/tests/bundleAsiPOJO/tests/provider.xml
+++ b/ipojo/tests/bundleAsiPOJO/tests/provider.xml
@@ -1,6 +1,8 @@
-<ipojo>
-<component classname="org.apache.felix.ipojo.pax.tinybundles.tests.impl.MyProvider">
-	<provides/>
-</component>
-<instance component="org.apache.felix.ipojo.pax.tinybundles.tests.impl.MyProvider"/>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
+	xmlns="org.apache.felix.ipojo">
+	<component classname="org.apache.felix.ipojo.pax.tinybundles.tests.impl.MyProvider">
+		<provides/>
+	</component>
+	<instance component="org.apache.felix.ipojo.pax.tinybundles.tests.impl.MyProvider"/>
 </ipojo>
\ No newline at end of file
diff --git a/ipojo/tests/bundleAsiPOJO/tests/src/test/java/org/apache/felix/ipojo/tinybundles/tests/BundleCreationTest.java b/ipojo/tests/bundleAsiPOJO/tests/src/test/java/org/apache/felix/ipojo/tinybundles/tests/BundleCreationTest.java
index 2584125..2aaec70 100644
--- a/ipojo/tests/bundleAsiPOJO/tests/src/test/java/org/apache/felix/ipojo/tinybundles/tests/BundleCreationTest.java
+++ b/ipojo/tests/bundleAsiPOJO/tests/src/test/java/org/apache/felix/ipojo/tinybundles/tests/BundleCreationTest.java
@@ -4,6 +4,11 @@
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
+import static org.ops4j.pax.exam.MavenUtils.asInProject;
+
 import static org.ops4j.pax.swissbox.tinybundles.core.TinyBundles.asURL;
 import static org.ops4j.pax.swissbox.tinybundles.core.TinyBundles.newBundle;
 import static org.ops4j.pax.swissbox.tinybundles.core.TinyBundles.with;
@@ -47,16 +52,19 @@
         }
 
         return options(
+            felix(),
+            equinox(),
+            knopflerfish(),
             provision(
-                mavenBundle()
-                    .groupId( "org.ops4j.pax.tinybundles" )
-                    .artifactId( "pax-tinybundles-core" )
-                    .version( "0.5.0-SNAPSHOT" )),
+                    mavenBundle()
+                    .groupId( "org.ops4j.pax.swissbox" )
+                    .artifactId( "pax-swissbox-tinybundles" )
+                    .version( asInProject() )),
             provision(
                     mavenBundle()
                     .groupId("org.apache.felix")
                     .artifactId("org.apache.felix.ipojo")
-                    .version("1.3.0-SNAPSHOT")
+                    .version ( asInProject() )
             ),
             provision(
                             newBundle()
diff --git a/ipojo/tests/composite/composite-runtime/pom.xml b/ipojo/tests/composite/composite-runtime/pom.xml
index f478cc0..2e01dc2 100644
--- a/ipojo/tests/composite/composite-runtime/pom.xml
+++ b/ipojo/tests/composite/composite-runtime/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,17 +27,17 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -82,7 +82,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/composite/composite-runtime/src/main/resources/metadata.xml b/ipojo/tests/composite/composite-runtime/src/main/resources/metadata.xml
index c8b0a64..b7c2ad2 100644
--- a/ipojo/tests/composite/composite-runtime/src/main/resources/metadata.xml
+++ b/ipojo/tests/composite/composite-runtime/src/main/resources/metadata.xml
@@ -1,7 +1,7 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/composite.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd
+	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/SNAPSHOT/composite.xsd"
 	xmlns="org.apache.felix.ipojo"
 	xmlns:comp="org.apache.felix.ipojo.composite"
 	xmlns:cs="org.apache.felix.ipojo.test.composite.handler.CheckServiceHandler">
@@ -76,13 +76,13 @@
 			<property name="baz" type="java.lang.String" value="bar" />
 		</provides>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.composite.component.BazProviderType1"
 		name="BazProviderType">
 		<provides />
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.composite.component.TataProvider"
 		name="tata">
@@ -100,14 +100,14 @@
 		name="totoglue">
 		<requires field="m_toto" scope="composite" />
 	</component>
-	
+
 	<!--  Composite -->
 	<comp:composite name="composite.empty" architecture="true">
 	</comp:composite>
-	
+
 	<component classname="org.apache.felix.ipojo.test.composite.component.Baz2CheckProvider" name="Baz2CheckProvider" architecture="true">
 		<requires field="fs" scope="composite"/>
 		<provides/>
 	</component>
-	
+
 </ipojo>
diff --git a/ipojo/tests/composite/import-export/pom.xml b/ipojo/tests/composite/import-export/pom.xml
index 611aa45..01083fd 100644
--- a/ipojo/tests/composite/import-export/pom.xml
+++ b/ipojo/tests/composite/import-export/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,17 +27,17 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -57,7 +57,7 @@
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -84,7 +84,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/composite/import-export/src/main/resources/metadata.xml b/ipojo/tests/composite/import-export/src/main/resources/metadata.xml
index ced65b9..7924d37 100644
--- a/ipojo/tests/composite/import-export/src/main/resources/metadata.xml
+++ b/ipojo/tests/composite/import-export/src/main/resources/metadata.xml
@@ -1,7 +1,7 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/composite.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd 
+	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/SNAPSHOT/composite.xsd"
 	xmlns="org.apache.felix.ipojo"
 	xmlns:comp="org.apache.felix.ipojo.composite"
 	xmlns:cs="org.apache.felix.ipojo.test.composite.handler.CheckServiceHandler">
diff --git a/ipojo/tests/composite/service-instance/pom.xml b/ipojo/tests/composite/service-instance/pom.xml
index c114ac5..dd6b2fd 100644
--- a/ipojo/tests/composite/service-instance/pom.xml
+++ b/ipojo/tests/composite/service-instance/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,17 +27,17 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -57,7 +57,7 @@
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -73,7 +73,7 @@
 							${pom.artifactId}
 						</Bundle-SymbolicName>
 						<Private-Package>
-							org.apache.felix.ipojo.test.composite.instantiator*, org.apache.felix.ipojo.test.composite.instance, org.apache.felix.ipojo.test.instance 
+							org.apache.felix.ipojo.test.composite.instantiator*, org.apache.felix.ipojo.test.composite.instance, org.apache.felix.ipojo.test.instance
 						</Private-Package>
 						<Export-Package>org.apache.felix.ipojo.test.instance.service</Export-Package>
 						<Test-Suite>
@@ -85,7 +85,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/composite/service-instance/src/main/resources/metadata.xml b/ipojo/tests/composite/service-instance/src/main/resources/metadata.xml
index edcec3f..3ec92cc 100644
--- a/ipojo/tests/composite/service-instance/src/main/resources/metadata.xml
+++ b/ipojo/tests/composite/service-instance/src/main/resources/metadata.xml
@@ -1,7 +1,7 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/composite.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd 
+	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/SNAPSHOT/composite.xsd"
 	xmlns="org.apache.felix.ipojo"
 	xmlns:comp="org.apache.felix.ipojo.composite"
 	xmlns:cs="org.apache.felix.ipojo.test.composite.handler.CheckServiceHandler">	
diff --git a/ipojo/tests/composite/service-providing/pom.xml b/ipojo/tests/composite/service-providing/pom.xml
index 724a36e..e4e6113 100644
--- a/ipojo/tests/composite/service-providing/pom.xml
+++ b/ipojo/tests/composite/service-providing/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,17 +27,17 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -57,7 +57,7 @@
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.composite</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -76,7 +76,7 @@
 							org.apache.felix.ipojo.test.composite.provides, org.apache.felix.ipojo.test.composite.test
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.composite.test.CompositeTest, org.apache.felix.ipojo.test.composite.provides.ProvidesTestSuite 
+							org.apache.felix.ipojo.test.composite.test.CompositeTest, org.apache.felix.ipojo.test.composite.provides.ProvidesTestSuite
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -84,7 +84,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/composite/service-providing/src/main/resources/metadata.xml b/ipojo/tests/composite/service-providing/src/main/resources/metadata.xml
index 26c8b5d..4df6a9e 100644
--- a/ipojo/tests/composite/service-providing/src/main/resources/metadata.xml
+++ b/ipojo/tests/composite/service-providing/src/main/resources/metadata.xml
@@ -1,7 +1,7 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/composite.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd 
+	    org.apache.felix.composite http://felix.apache.org/ipojo/schemas/SNAPSHOT/composite.xsd"
 	xmlns="org.apache.felix.ipojo"
 	xmlns:comp="org.apache.felix.ipojo.composite">
 	<comp:composite name="composite.test.3" architecture="true">
diff --git a/ipojo/tests/core/annotations/pom.xml b/ipojo/tests/core/annotations/pom.xml
index fd84c01..9b18961 100644
--- a/ipojo/tests/core/annotations/pom.xml
+++ b/ipojo/tests/core/annotations/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,13 +27,13 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata
 			</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -53,15 +53,15 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.annotations</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
-	
+
 	<build>
 		<plugins>
 			<plugin>
@@ -97,7 +97,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/bad-configurations/pom.xml b/ipojo/tests/core/bad-configurations/pom.xml
index 1f7ff6e..65b93c5 100644
--- a/ipojo/tests/core/bad-configurations/pom.xml
+++ b/ipojo/tests/core/bad-configurations/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/configadmin/pom.xml b/ipojo/tests/core/configadmin/pom.xml
index fc125d1..82ffdde 100644
--- a/ipojo/tests/core/configadmin/pom.xml
+++ b/ipojo/tests/core/configadmin/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -76,7 +76,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/configadmin/src/main/resources/metadata.xml b/ipojo/tests/core/configadmin/src/main/resources/metadata.xml
index fa55c53..09134da 100644
--- a/ipojo/tests/core/configadmin/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/configadmin/src/main/resources/metadata.xml
@@ -1,5 +1,5 @@
 <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd" xmlns="org.apache.felix.ipojo">
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd" xmlns="org.apache.felix.ipojo">
 		<component classname="org.apache.felix.ipojo.test.scenarios.component.ConfigurableFooProvider" 
 			name="CA-ConfigurableProvider">
 			<provides></provides>
diff --git a/ipojo/tests/core/configuration/pom.xml b/ipojo/tests/core/configuration/pom.xml
index 7e1b757..f3ce81d 100644
--- a/ipojo/tests/core/configuration/pom.xml
+++ b/ipojo/tests/core/configuration/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
@@ -100,7 +100,7 @@
 			<!-- Test -->
 			<plugin>
 				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-junit4osgi-plugin 
+				<artifactId>maven-junit4osgi-plugin
 				</artifactId>
 				<version>1.1.0-SNAPSHOT</version>
 				<executions>
diff --git a/ipojo/tests/core/configuration/src/main/resources/metadata.xml b/ipojo/tests/core/configuration/src/main/resources/metadata.xml
index 526dea9..e41d58a 100644
--- a/ipojo/tests/core/configuration/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/configuration/src/main/resources/metadata.xml
@@ -1,5 +1,5 @@
 <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo hhttp://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd" 
+	xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/SCHEMA-DEV/core.xsd"
 	xmlns="org.apache.felix.ipojo">
 		<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
@@ -14,7 +14,7 @@
 			<property name="intAProp" field="intAProp" value="{1,2, 3}" />
 		</properties>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
 		name="CONFIG-FooProviderType-ConfNoValue" architecture="true">
@@ -27,8 +27,8 @@
 			<property name="intAProp" field="intAProp"/>
 		</properties>
 	</component>
-	
-	
+
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
 		name="CONFIG-FooProviderType-3" architecture="true">
@@ -147,7 +147,7 @@
 				type="java.lang.String[]" />
 		</properties>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
 		name="CONFIG-FooProviderType-4" architecture="true">
@@ -161,7 +161,7 @@
 			<property name="bar" field="m_bar" />
 		</properties>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.ComplexConfiguration">
 		<provides>
@@ -186,7 +186,7 @@
 			<property name="dict" field="m_dict"/>
 		</properties>
 	</component>
-	
+
 	<instance component="org.apache.felix.ipojo.test.scenarios.component.ComplexConfiguration" name="complex">
 		<property name="array" type="array">
 			<property value="a"/>
@@ -238,7 +238,7 @@
 		<property name="empty-list" type="list"/>
 		<property name="empty-map" type="map"/>
 	</instance>
-	
+
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.PropertyModifier">
 		<provides>
 			<property field="classes"/>
@@ -247,7 +247,7 @@
 			<property method="setClasses" name="cls"/>
 		</properties>
 	</component>
-	
+
 	<!--  updated -->
 	 <component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
@@ -262,7 +262,7 @@
 			<property name="intAProp" field="intAProp" value="{1,2, 3}" />
 		</properties>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
 		name="CONFIG-FooProviderType-ConfNoValueUpdated" architecture="true">
@@ -275,7 +275,7 @@
 			<property name="intAProp" field="intAProp"/>
 		</properties>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
 		name="CONFIG-FooProviderType-4Updated" architecture="true">
@@ -289,7 +289,7 @@
 			<property name="bar" field="m_bar" />
 		</properties>
 	</component>
-	
+
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
 		name="CONFIG-FooProviderType-3Updated" architecture="true">
@@ -303,5 +303,5 @@
 			<property name="bar" field="m_bar" />
 		</properties>
 	</component>
-	
+
 </ipojo>
diff --git a/ipojo/tests/core/external-handlers/pom.xml b/ipojo/tests/core/external-handlers/pom.xml
index 7f30f0a..1b39e96 100644
--- a/ipojo/tests/core/external-handlers/pom.xml
+++ b/ipojo/tests/core/external-handlers/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/external-handlers/src/main/resources/metadata.xml b/ipojo/tests/core/external-handlers/src/main/resources/metadata.xml
index 621dfec..343244e 100644
--- a/ipojo/tests/core/external-handlers/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/external-handlers/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 	xmlns:cs="org.apache.felix.ipojo.test.handler.checkservice">
 	<handler
diff --git a/ipojo/tests/core/factories/pom.xml b/ipojo/tests/core/factories/pom.xml
index 9ff1ed1..b419cec 100644
--- a/ipojo/tests/core/factories/pom.xml
+++ b/ipojo/tests/core/factories/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/factories/src/main/resources/metadata.xml b/ipojo/tests/core/factories/src/main/resources/metadata.xml
index fe928e6..ad57539 100644
--- a/ipojo/tests/core/factories/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/factories/src/main/resources/metadata.xml
@@ -1,5 +1,5 @@
 <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo hhttp://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd" 
+	xsi:schemaLocation="org.apache.felix.ipojo hhttp://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd" 
 	xmlns="org.apache.felix.ipojo">
 	<!-- Simple provider  -->
 	<component
diff --git a/ipojo/tests/core/factory-version/cons.xml b/ipojo/tests/core/factory-version/cons.xml
index 8d63da4..69f729a 100644
--- a/ipojo/tests/core/factory-version/cons.xml
+++ b/ipojo/tests/core/factory-version/cons.xml
@@ -1,4 +1,6 @@
-<ipojo>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
+	xmlns="org.apache.felix.ipojo">
 	<component name="cons" classname="org.apache.felix.ipojo.tests.core.component.MyCons">
 		<requires field="services"/>
 	</component>
diff --git a/ipojo/tests/core/factory-version/instances.xml b/ipojo/tests/core/factory-version/instances.xml
index cda4486..40c8411 100644
--- a/ipojo/tests/core/factory-version/instances.xml
+++ b/ipojo/tests/core/factory-version/instances.xml
@@ -1,4 +1,6 @@
-<ipojo>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/SCHEMA-DEV/core.xsd"
+	xmlns="org.apache.felix.ipojo">
 
 	<instance component="org.apache.felix.ipojo.tests.core.component.MyComponent"
 		version="1.0"
diff --git a/ipojo/tests/core/factory-version/pom.xml b/ipojo/tests/core/factory-version/pom.xml
index 40390e0..c8e4928 100644
--- a/ipojo/tests/core/factory-version/pom.xml
+++ b/ipojo/tests/core/factory-version/pom.xml
@@ -53,7 +53,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 
 	<!--
@@ -101,7 +101,7 @@
 	<dependency>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>org.apache.felix.ipojo.tinybundles.bundleAsiPOJO</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>${pom.version}</version>
 	</dependency>
 	</dependencies>
 
diff --git a/ipojo/tests/core/factory-version/provider-v1.1.xml b/ipojo/tests/core/factory-version/provider-v1.1.xml
index 77d4fdf..a75f841 100644
--- a/ipojo/tests/core/factory-version/provider-v1.1.xml
+++ b/ipojo/tests/core/factory-version/provider-v1.1.xml
@@ -1,4 +1,6 @@
-<ipojo>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/SCHEMA-DEV/core.xsd"
+	xmlns="org.apache.felix.ipojo">
 	<component classname="org.apache.felix.ipojo.tests.core.component.MyComponent" version="BuNdlE">
 		<provides/>
 	</component>
diff --git a/ipojo/tests/core/factory-version/provider-v1.xml b/ipojo/tests/core/factory-version/provider-v1.xml
index 24ce4c8..2625d41 100644
--- a/ipojo/tests/core/factory-version/provider-v1.xml
+++ b/ipojo/tests/core/factory-version/provider-v1.xml
@@ -1,4 +1,6 @@
-<ipojo>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/SCHEMA-DEV/core.xsd"
+	xmlns="org.apache.felix.ipojo">
 	<component classname="org.apache.felix.ipojo.tests.core.component.MyComponent" version="1.0">
 		<provides/>
 	</component>
diff --git a/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/FactoryVersionTest.java b/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/FactoryVersionTest.java
index f5432c4..1b9d246 100644
--- a/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/FactoryVersionTest.java
+++ b/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/FactoryVersionTest.java
@@ -1,6 +1,9 @@
 package org.apache.felix.ipojo.tests.core;
 
 import static org.apache.felix.ipojo.tinybundles.BundleAsiPOJO.asiPOJOBundle;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
@@ -57,6 +60,9 @@
         tmp.mkdirs();
 
         Option[] opt =  options(
+                felix(),
+                equinox(),
+                knopflerfish(),
                 provision(
                         // Runtime.
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
diff --git a/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/VersionConflictTest.java b/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/VersionConflictTest.java
index c2461dc..a91842b 100644
--- a/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/VersionConflictTest.java
+++ b/ipojo/tests/core/factory-version/src/test/java/org/apache/felix/ipojo/tests/core/VersionConflictTest.java
@@ -1,6 +1,9 @@
 package org.apache.felix.ipojo.tests.core;
 
 import static org.apache.felix.ipojo.tinybundles.BundleAsiPOJO.asiPOJOBundle;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
@@ -128,6 +131,9 @@
       .build( asiPOJOBundle(new File(tmp, "consv1.jar"), new File("cons.xml"))).toExternalForm();
 
         Option[] opt =  options(
+                felix(),
+                equinox(),
+                knopflerfish(),
                 provision(
                         // Runtime.
                         mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo").version(asInProject()),
diff --git a/ipojo/tests/core/factory-version/vprovider-v1.xml b/ipojo/tests/core/factory-version/vprovider-v1.xml
index 283beba..4e40ae9 100644
--- a/ipojo/tests/core/factory-version/vprovider-v1.xml
+++ b/ipojo/tests/core/factory-version/vprovider-v1.xml
@@ -1,4 +1,6 @@
-<ipojo>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/SCHEMA-DEV/core.xsd"
+	xmlns="org.apache.felix.ipojo">
 	<component name="provider" classname="org.apache.felix.ipojo.tests.core.component.MyComponent" version="1.0">
 		<provides/>
 	</component>
diff --git a/ipojo/tests/core/factory-version/vprovider-v2.xml b/ipojo/tests/core/factory-version/vprovider-v2.xml
index 599a32b..31d2434 100644
--- a/ipojo/tests/core/factory-version/vprovider-v2.xml
+++ b/ipojo/tests/core/factory-version/vprovider-v2.xml
@@ -1,4 +1,6 @@
-<ipojo>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/SCHEMA-DEV/core.xsd"
+	xmlns="org.apache.felix.ipojo">
 	<component name="provider" classname="org.apache.felix.ipojo.tests.core.component.MyComponent" version="2.0">
 		<provides/>
 	</component>
diff --git a/ipojo/tests/core/lifecycle-callback/pom.xml b/ipojo/tests/core/lifecycle-callback/pom.xml
index 2b38012..fe7f317 100644
--- a/ipojo/tests/core/lifecycle-callback/pom.xml
+++ b/ipojo/tests/core/lifecycle-callback/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/lifecycle-callback/src/main/resources/metadata.xml b/ipojo/tests/core/lifecycle-callback/src/main/resources/metadata.xml
index de9d391..47c17a2 100644
--- a/ipojo/tests/core/lifecycle-callback/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/lifecycle-callback/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<component
diff --git a/ipojo/tests/core/lifecycle-controller/pom.xml b/ipojo/tests/core/lifecycle-controller/pom.xml
index 19400c9..d8a9579 100644
--- a/ipojo/tests/core/lifecycle-controller/pom.xml
+++ b/ipojo/tests/core/lifecycle-controller/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
@@ -89,7 +89,7 @@
 							    <![CDATA[
 								<ipojo
    									 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    								 xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    								 xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     								 xmlns="org.apache.felix.ipojo">
 									 <component
 										classname="org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest"
diff --git a/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml b/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml
index 59ed4a5..a116aac 100644
--- a/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml
+++ b/ipojo/tests/core/service-dependency-bindingpolicy/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -52,7 +52,7 @@
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.core.service.dependency</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -68,7 +68,7 @@
 							${pom.artifactId}
 						</Bundle-SymbolicName>
 						<Private-Package>
-							org.apache.felix.ipojo.test.scenarios.service.dependency.dynamic.priority, org.apache.felix.ipojo.test.scenarios.service.dependency.policies, org.apache.felix.ipojo.test.scenarios.service.dependency.statics, org.apache.felix.ipojo.test.scenarios.util  
+							org.apache.felix.ipojo.test.scenarios.service.dependency.dynamic.priority, org.apache.felix.ipojo.test.scenarios.service.dependency.policies, org.apache.felix.ipojo.test.scenarios.service.dependency.statics, org.apache.felix.ipojo.test.scenarios.util
 						</Private-Package>
 						<Test-Suite>
 							org.apache.felix.ipojo.test.scenarios.service.dependency.policies.DependencyTestSuite
@@ -79,7 +79,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
@@ -101,7 +101,7 @@
 			</plugin>
 			<!--<plugin>
 				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-junit4osgi-plugin 
+				<artifactId>maven-junit4osgi-plugin
 				</artifactId>
 				<version>1.1.0-SNAPSHOT</version>
 				<executions>
diff --git a/ipojo/tests/core/service-dependency-bindingpolicy/src/main/resources/metadata.xml b/ipojo/tests/core/service-dependency-bindingpolicy/src/main/resources/metadata.xml
index c5c2139..36f49c3 100644
--- a/ipojo/tests/core/service-dependency-bindingpolicy/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-dependency-bindingpolicy/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 
diff --git a/ipojo/tests/core/service-dependency-comparator/pom.xml b/ipojo/tests/core/service-dependency-comparator/pom.xml
index c046c37..c9bae36 100644
--- a/ipojo/tests/core/service-dependency-comparator/pom.xml
+++ b/ipojo/tests/core/service-dependency-comparator/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -52,7 +52,7 @@
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.core.service.dependency</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -72,7 +72,7 @@
 							org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component
 						</Private-Package>
 						<Test-Suite>
-							org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.ComparatorTestCase						
+							org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.ComparatorTestCase
 						</Test-Suite>
 					</instructions>
 				</configuration>
@@ -80,7 +80,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml b/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml
index 2b922a3..d278fe5 100644
--- a/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<component classname="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradedFooServiceProvider"
diff --git a/ipojo/tests/core/service-dependency-filter/pom.xml b/ipojo/tests/core/service-dependency-filter/pom.xml
index 3b14c6e..510bffa 100644
--- a/ipojo/tests/core/service-dependency-filter/pom.xml
+++ b/ipojo/tests/core/service-dependency-filter/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -52,7 +52,7 @@
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.core.service.dependency</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -68,7 +68,7 @@
 							${pom.artifactId}
 						</Bundle-SymbolicName>
 						<Private-Package>
-							org.apache.felix.ipojo.test.scenarios.service.dependency.filter, org.apache.felix.ipojo.test.scenarios.service.dependency.filter.component, org.apache.felix.ipojo.test.scenarios.util  
+							org.apache.felix.ipojo.test.scenarios.service.dependency.filter, org.apache.felix.ipojo.test.scenarios.service.dependency.filter.component, org.apache.felix.ipojo.test.scenarios.util
 						</Private-Package>
 						<Test-Suite>
 							org.apache.felix.ipojo.test.scenarios.service.dependency.filter.FilteredDependencyTestSuite
@@ -79,7 +79,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/service-dependency-filter/src/main/resources/metadata.xml b/ipojo/tests/core/service-dependency-filter/src/main/resources/metadata.xml
index a05d390..9918326 100644
--- a/ipojo/tests/core/service-dependency-filter/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-dependency-filter/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo">
 
 	<!--  Simple Filter Dependencies -->
diff --git a/ipojo/tests/core/service-dependency/pom.xml b/ipojo/tests/core/service-dependency/pom.xml
index ba5d285..8d3a0b1 100644
--- a/ipojo/tests/core/service-dependency/pom.xml
+++ b/ipojo/tests/core/service-dependency/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml b/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml
index 87e91c5..bb49773 100644
--- a/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml
@@ -1,5 +1,5 @@
 <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
 	xmlns="org.apache.felix.ipojo">
 	<component
 		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
diff --git a/ipojo/tests/core/service-providing-strategies/pom.xml b/ipojo/tests/core/service-providing-strategies/pom.xml
index 7d6b792..6d55e7e 100755
--- a/ipojo/tests/core/service-providing-strategies/pom.xml
+++ b/ipojo/tests/core/service-providing-strategies/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -52,7 +52,7 @@
 		<dependency>
 			<artifactId>tests.core.ps</artifactId>
 			<groupId>ipojo.tests</groupId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 	</dependencies>
 	<build>
@@ -79,7 +79,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml b/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml
index 01cb6c5..21f931b 100755
--- a/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<!-- Simple provider  -->
diff --git a/ipojo/tests/core/service-providing/pom.xml b/ipojo/tests/core/service-providing/pom.xml
index 6b81903..c47a44a 100644
--- a/ipojo/tests/core/service-providing/pom.xml
+++ b/ipojo/tests/core/service-providing/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/core/service-providing/src/main/resources/metadata.xml b/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
index 5dcd7c6..3e7c026 100644
--- a/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<!-- Simple provider  -->
diff --git a/ipojo/tests/handler/eventadmin/pom.xml b/ipojo/tests/handler/eventadmin/pom.xml
index d396489..2e651aa 100644
--- a/ipojo/tests/handler/eventadmin/pom.xml
+++ b/ipojo/tests/handler/eventadmin/pom.xml
@@ -12,7 +12,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -22,7 +22,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>junit</groupId>
@@ -55,7 +55,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/handler/eventadmin/src/main/resources/metadata.xml b/ipojo/tests/handler/eventadmin/src/main/resources/metadata.xml
index b574eb7..ffa0c55 100644
--- a/ipojo/tests/handler/eventadmin/src/main/resources/metadata.xml
+++ b/ipojo/tests/handler/eventadmin/src/main/resources/metadata.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	    org.apache.felix.ipojo.handlers.event http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/event-admin.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd 
+	    org.apache.felix.ipojo.handlers.event http://felix.apache.org/ipojo/schemas/SNAPSHOT/event-admin.xsd"
 	xmlns="org.apache.felix.ipojo"
 	xmlns:ev="org.apache.felix.ipojo.handlers.event">
 	
diff --git a/ipojo/tests/handler/temporal/pom.xml b/ipojo/tests/handler/temporal/pom.xml
index 1437be6..fa2db02 100644
--- a/ipojo/tests/handler/temporal/pom.xml
+++ b/ipojo/tests/handler/temporal/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -79,7 +79,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/handler/temporal/src/main/resources/metadata.xml b/ipojo/tests/handler/temporal/src/main/resources/metadata.xml
index bf9673b..2588b5b 100644
--- a/ipojo/tests/handler/temporal/src/main/resources/metadata.xml
+++ b/ipojo/tests/handler/temporal/src/main/resources/metadata.xml
@@ -1,7 +1,7 @@
 <ipojo
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	    org.apache.felix.ipojo.handler.temporal http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/temporal.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd 
+	    org.apache.felix.ipojo.handler.temporal http://felix.apache.org/ipojo/schemas/SNAPSHOT/temporal.xsd"
 	xmlns="org.apache.felix.ipojo"
 	xmlns:temp="org.apache.felix.ipojo.handler.temporal">
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" name="TEMPORAL-CheckServiceProvider">
diff --git a/ipojo/tests/handler/transaction/pom.xml b/ipojo/tests/handler/transaction/pom.xml
index d2c75d8..fb2227d 100644
--- a/ipojo/tests/handler/transaction/pom.xml
+++ b/ipojo/tests/handler/transaction/pom.xml
@@ -10,17 +10,17 @@
     <dependency>
   		<groupId>org.apache.felix</groupId>
   		<artifactId>org.apache.felix.ipojo</artifactId>
-  		<version>1.3.0-SNAPSHOT</version>
+  		<version>${pom.version}</version>
   	</dependency>
   	<dependency>
   		<groupId>org.apache.felix</groupId>
   		<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-  		<version>1.3.0-SNAPSHOT</version>
+  		<version>${pom.version}</version>
   	</dependency>
   	<dependency>
   		<groupId>org.apache.felix</groupId>
   		<artifactId>org.apache.felix.ipojo.annotations</artifactId>
-  		<version>1.3.0-SNAPSHOT</version>
+  		<version>${pom.version}</version>
   	</dependency>
   	<dependency>
   		<groupId>org.apache.felix</groupId>
@@ -30,7 +30,7 @@
   	  	<dependency>
   		<groupId>org.apache.felix</groupId>
   		<artifactId>org.apache.felix.ipojo.handler.transaction</artifactId>
-  		<version>1.3.0-SNAPSHOT</version>
+  		<version>${pom.version}</version>
   	</dependency>
   <!--
 		Pax Exam API:
@@ -77,7 +77,7 @@
 	<dependency>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>org.apache.felix.ipojo.tinybundles.bundleAsiPOJO</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>${pom.version}</version>
 	</dependency>
 	 <dependency>
 			<groupId>xerces</groupId>
diff --git a/ipojo/tests/handler/whiteboard/pom.xml b/ipojo/tests/handler/whiteboard/pom.xml
index 43aab67..6eb3c9e 100644
--- a/ipojo/tests/handler/whiteboard/pom.xml
+++ b/ipojo/tests/handler/whiteboard/pom.xml
@@ -9,7 +9,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.ipojo</artifactId>
-      <version>1.3.0-SNAPSHOT</version>
+      <version>${pom.version}</version>
     </dependency>
 	<dependency>
 		<groupId>org.apache.felix</groupId>
@@ -44,7 +44,7 @@
 	<plugin>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>maven-ipojo-plugin</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>${pom.version}</version>
 		<executions>
 			<execution>
 				<goals>
@@ -54,10 +54,10 @@
 					<ignoreAnnotations>true</ignoreAnnotations>
 					<metadata>
    					<![CDATA[
-   					<ipojo 
+   					<ipojo
     					xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-						xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd 
-	 					org.apache.felix.ipojo.whiteboard http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/whiteboard-pattern.xsd"
+						xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd
+	 					org.apache.felix.ipojo.whiteboard http://felix.apache.org/ipojo/schemas/SNAPSHOT/whiteboard-pattern.xsd"
 						xmlns="org.apache.felix.ipojo"
 						xmlns:wbp="org.apache.felix.ipojo.whiteboard">
 						<component classname="org.apache.felix.ipojo.test.FooProvider" name="fooprovider">
@@ -65,17 +65,17 @@
 								<property field="foo" value="foo"/>
 							</provides>
 						</component>
-	
+
 						<component classname="org.apache.felix.ipojo.test.FooWhiteBoardPattern" name="under-providers">
-								<wbp:wbp 
-									filter="(objectclass=org.apache.felix.ipojo.test.FooService)" 
+								<wbp:wbp
+									filter="(objectclass=org.apache.felix.ipojo.test.FooService)"
 									onArrival="onArrival" onDeparture="onDeparture" onModification="onModification"
 								/>
 								<provides/>
 						</component>
-	
+
 						<component classname="org.apache.felix.ipojo.test.FooWhiteBoardPattern" name="under-properties">
-								<wbp:wbp filter="(foo=foo)" onArrival="onArrival" onDeparture="onDeparture" 
+								<wbp:wbp filter="(foo=foo)" onArrival="onArrival" onDeparture="onDeparture"
 									onModification="onModification"
 								/>
 								<provides/>
diff --git a/ipojo/tests/manipulator/creation/pom.xml b/ipojo/tests/manipulator/creation/pom.xml
index ce3b590..263f171 100644
--- a/ipojo/tests/manipulator/creation/pom.xml
+++ b/ipojo/tests/manipulator/creation/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/manipulator/creation/src/main/resources/metadata.xml b/ipojo/tests/manipulator/creation/src/main/resources/metadata.xml
index 5d2c2de..947c46f 100644
--- a/ipojo/tests/manipulator/creation/src/main/resources/metadata.xml
+++ b/ipojo/tests/manipulator/creation/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<!-- Simple provider  used for manipulation analysis -->
diff --git a/ipojo/tests/manipulator/manipulation/pom.xml b/ipojo/tests/manipulator/manipulation/pom.xml
index 4632993..40f92ec 100644
--- a/ipojo/tests/manipulator/manipulation/pom.xml
+++ b/ipojo/tests/manipulator/manipulation/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/manipulator/manipulation/src/main/resources/metadata.xml b/ipojo/tests/manipulator/manipulation/src/main/resources/metadata.xml
index 28d907a..b3e0262 100644
--- a/ipojo/tests/manipulator/manipulation/src/main/resources/metadata.xml
+++ b/ipojo/tests/manipulator/manipulation/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<!-- Simple provider  used for manipulation analysis -->
diff --git a/ipojo/tests/manipulator/manipulator-java5/pom.xml b/ipojo/tests/manipulator/manipulator-java5/pom.xml
index f566a5b..c2a8f45 100644
--- a/ipojo/tests/manipulator/manipulator-java5/pom.xml
+++ b/ipojo/tests/manipulator/manipulator-java5/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/manipulator/manipulator-java5/src/main/resources/metadata.xml b/ipojo/tests/manipulator/manipulator-java5/src/main/resources/metadata.xml
index 840cea3..a2ff517 100644
--- a/ipojo/tests/manipulator/manipulator-java5/src/main/resources/metadata.xml
+++ b/ipojo/tests/manipulator/manipulator-java5/src/main/resources/metadata.xml
@@ -1,5 +1,5 @@
 <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
 	xmlns="org.apache.felix.ipojo">
 	
 	<!-- Check duplicate method issue -->
diff --git a/ipojo/tests/manipulator/metadata/pom.xml b/ipojo/tests/manipulator/metadata/pom.xml
index 1e7c432..ef1e5a2 100644
--- a/ipojo/tests/manipulator/metadata/pom.xml
+++ b/ipojo/tests/manipulator/metadata/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/manipulator/metadata/src/main/resources/metadata.xml b/ipojo/tests/manipulator/metadata/src/main/resources/metadata.xml
index cbc6f4b..6641a4b 100644
--- a/ipojo/tests/manipulator/metadata/src/main/resources/metadata.xml
+++ b/ipojo/tests/manipulator/metadata/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo hhttp://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo hhttp://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	<!-- Simple provider  used for manipulation analysis -->
diff --git a/ipojo/tests/manipulator/primitives/pom.xml b/ipojo/tests/manipulator/primitives/pom.xml
index a0210e0..b20af18 100644
--- a/ipojo/tests/manipulator/primitives/pom.xml
+++ b/ipojo/tests/manipulator/primitives/pom.xml
@@ -6,9 +6,9 @@
 	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
@@ -27,12 +27,12 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>${pom.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
@@ -77,7 +77,7 @@
 			<plugin>
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>1.3.0-SNAPSHOT</version>
+				<version>${pom.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/ipojo/tests/manipulator/primitives/src/main/resources/metadata.xml b/ipojo/tests/manipulator/primitives/src/main/resources/metadata.xml
index e301221..b66c91b 100644
--- a/ipojo/tests/manipulator/primitives/src/main/resources/metadata.xml
+++ b/ipojo/tests/manipulator/primitives/src/main/resources/metadata.xml
@@ -1,6 +1,6 @@
 <ipojo
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/1.1.0-SNAPSHOT/core.xsd"
+    xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
 	
diff --git a/ipojo/tests/online-manipulator/pom.xml b/ipojo/tests/online-manipulator/pom.xml
index 4b89c93..692367c 100644
--- a/ipojo/tests/online-manipulator/pom.xml
+++ b/ipojo/tests/online-manipulator/pom.xml
@@ -104,7 +104,7 @@
 	<dependency>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>org.apache.felix.ipojo.tinybundles.bundleAsiPOJO</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>${pom.version}</version>
 	</dependency>
  	 <dependency>
 			<groupId>xerces</groupId>
@@ -114,12 +114,17 @@
  	 <dependency>
  	 	<groupId>org.apache.felix</groupId>
  	 	<artifactId>org.apache.felix.ipojo.annotations</artifactId>
- 	 	<version>1.2.0</version>
+ 	 	<version>${pom.version}</version>
  	 </dependency>
   	 <dependency>
  	 	<groupId>org.apache.felix</groupId>
  	 	<artifactId>org.apache.felix.ipojo</artifactId>
- 	 	<version>1.3.0-SNAPSHOT</version>
+ 	 	<version>${pom.version}</version>
+ 	 </dependency>
+ 	  <dependency>
+ 	 	<groupId>org.apache.felix</groupId>
+ 	 	<artifactId>org.apache.felix.ipojo.online.manipulator</artifactId>
+ 	 	<version>${pom.version}</version>
  	 </dependency>
 
 	</dependencies>
diff --git a/ipojo/tests/online-manipulator/src/test/java/consumer.xml b/ipojo/tests/online-manipulator/src/test/java/consumer.xml
index ab09472..98f82f8 100644
--- a/ipojo/tests/online-manipulator/src/test/java/consumer.xml
+++ b/ipojo/tests/online-manipulator/src/test/java/consumer.xml
@@ -1,4 +1,7 @@
-<ipojo>
-<instance component="org.apache.felix.org.apache.felix.ipojo.online.manipulator.test.impl.Consumer"
-	name="cons"/>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
+	xmlns="org.apache.felix.ipojo">
+	<instance
+		component="org.apache.felix.org.apache.felix.ipojo.online.manipulator.test.impl.Consumer"
+		name="cons"/>
 </ipojo>
\ No newline at end of file
diff --git a/ipojo/tests/online-manipulator/src/test/java/org/apache/felix/org/apache/felix/ipojo/online/manipulator/test/OnlineManipulatorTest.java b/ipojo/tests/online-manipulator/src/test/java/org/apache/felix/org/apache/felix/ipojo/online/manipulator/test/OnlineManipulatorTest.java
index f119499..c10f824 100644
--- a/ipojo/tests/online-manipulator/src/test/java/org/apache/felix/org/apache/felix/ipojo/online/manipulator/test/OnlineManipulatorTest.java
+++ b/ipojo/tests/online-manipulator/src/test/java/org/apache/felix/org/apache/felix/ipojo/online/manipulator/test/OnlineManipulatorTest.java
@@ -3,8 +3,10 @@
 
 import static org.ops4j.pax.exam.CoreOptions.equinox;
 import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
 import static org.ops4j.pax.exam.CoreOptions.frameworks;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.MavenUtils.asInProject;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
@@ -74,24 +76,25 @@
                 frameworks(
                         felix(),
                         equinox()
+                      //  knopflerfish() KF does not export an XML parser.
                     ),
             provision(
                 mavenBundle()
-                    .groupId( "org.ops4j.pax.tinybundles" )
-                    .artifactId( "pax-tinybundles-core" )
-                    .version( "0.5.0-SNAPSHOT" )),
+                    .groupId( "org.ops4j.pax.swissbox" )
+                    .artifactId( "pax-swissbox-tinybundles" )
+                    .version(asInProject())),
             provision(
                     mavenBundle()
                     .groupId("org.apache.felix")
                     .artifactId("org.apache.felix.ipojo")
-                    .version("1.3.0-SNAPSHOT")
+                    .version(asInProject())
             ),
 
             provision(
                     mavenBundle()
                     .groupId("org.apache.felix")
                     .artifactId("org.apache.felix.ipojo.online.manipulator")
-                    .version("1.3.0-SNAPSHOT")
+                    .version(asInProject())
                     ),
             provision(
                             newBundle()
diff --git a/ipojo/tests/online-manipulator/src/test/java/provider.xml b/ipojo/tests/online-manipulator/src/test/java/provider.xml
index 64bbe01..1171c64 100644
--- a/ipojo/tests/online-manipulator/src/test/java/provider.xml
+++ b/ipojo/tests/online-manipulator/src/test/java/provider.xml
@@ -1,6 +1,8 @@
-<ipojo>
-<component classname="org.apache.felix.org.apache.felix.ipojo.online.manipulator.test.impl.MyProvider">
-	<provides/>
-</component>
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
+	xmlns="org.apache.felix.ipojo">
+	<component classname="org.apache.felix.org.apache.felix.ipojo.online.manipulator.test.impl.MyProvider">
+		<provides/>
+	</component>
 <instance component="org.apache.felix.org.apache.felix.ipojo.online.manipulator.test.impl.MyProvider"/>
 </ipojo>
\ No newline at end of file
