diff --git a/ipojo/tests/tests.composite.service.instance/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java b/ipojo/tests/tests.composite.service.instance/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java
index 4654a95..1f39ab2 100644
--- a/ipojo/tests/tests.composite.service.instance/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java
+++ b/ipojo/tests/tests.composite.service.instance/src/main/java/org/apache/felix/ipojo/test/composite/instance/SimpleInstance.java
@@ -192,7 +192,7 @@
 		} catch(Exception e) {
 			fail("Cannot instantiate under : " + e.getMessage());
 		}
-		ServiceReference ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "under");
+		ServiceReference ref = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance=under)");
 		assertNotNull("Check architecture availability", ref);
 		Architecture arch = (Architecture) context.getService(ref);
 		InstanceDescription id = arch.getInstanceDescription();
@@ -210,7 +210,7 @@
 		
 		fact1.stop();
 		assertTrue("Check instance validity - 2", under.getState() == ComponentInstance.VALID);
-		ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "under");
+		ref = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance=under)");
 		assertNotNull("Check architecture availability", ref);
 		arch = (Architecture) context.getService(ref);
 		id = arch.getInstanceDescription();
diff --git a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/util/Utils.java b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/util/Utils.java
index ea67fee..deb96ef 100644
--- a/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/util/Utils.java
+++ b/ipojo/tests/tests.composite/src/main/java/org/apache/felix/ipojo/test/composite/util/Utils.java
@@ -26,6 +26,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.composite.CompositeManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
@@ -139,6 +140,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/AnnotationsTestSuite.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/AnnotationsTestSuite.java
index ff7292b..5b58924 100644
--- a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/AnnotationsTestSuite.java
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/AnnotationsTestSuite.java
@@ -40,6 +40,9 @@
         ots.addTestSuite(PolicyDependency.class);
         ots.addTestSuite(FilteredDependency.class);
         ots.addTestSuite(RankedDependency.class);
+        
+        // External handler annotations
+        ots.addTestSuite(TemporalDependencies.class);
         return ots;
     }
 
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/TemporalDependencies.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/TemporalDependencies.java
new file mode 100644
index 0000000..db1b416
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/TemporalDependencies.java
@@ -0,0 +1,100 @@
+package org.apache.felix.ipojo.test.scenarios.annotations;
+
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.metadata.Element;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+
+public class TemporalDependencies extends OSGiTestCase {
+    
+    public void testSimple() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalSimple");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        String to = provs[0].getAttribute("timeout");
+        assertNull("No timeout", to);
+        String oto = provs[0].getAttribute("onTimeout");
+        assertNull("No onTimeout", oto);
+    }
+    
+    public void testDI() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalWithDI");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        
+        String oto = provs[0].getAttribute("onTimeout");
+        assertEquals("onTimeout is the DI", "org.apache.felix.ipojo.test.scenarios.component.ProvidesSimple", oto);
+               
+    }
+    
+    public void testEmptyArray() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalWithEmptyArray");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        
+        String oto = provs[0].getAttribute("onTimeout");
+        assertEquals("onTimeout is empty-array", "empty-array", oto);
+               
+    }
+    
+    public void testNull() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalWithNull");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        
+        String oto = provs[0].getAttribute("onTimeout");
+        assertEquals("onTimeout is null", "null", oto);
+               
+    }
+    
+    public void testNullable() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalWithNullable");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        
+        String oto = provs[0].getAttribute("onTimeout");
+        assertEquals("onTimeout is nullable", "nullable", oto);
+               
+    }
+    
+    public void testFilter() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalWithFilter");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        
+        String filter = provs[0].getAttribute("filter");
+        assertEquals("Filter", "(vendor=clement)", filter);
+            
+    }
+    
+    public void testTimeout() {
+        Element meta = Utils.getMetatadata(context, "org.apache.felix.ipojo.test.scenarios.component.temporal.TemporalWithTimeout");
+        Element[] provs = meta.getElements("requires", "org.apache.felix.ipojo.handler.temporal");
+        assertNotNull("Temporal exists ", provs);
+        String field = provs[0].getAttribute("field");
+        assertNotNull("Field not null", field);
+        assertEquals("Field is fs", "fs", field);
+        
+        String to = provs[0].getAttribute("timeout");
+        assertEquals("Check timeout", "100", to);
+            
+    }
+
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalSimple.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalSimple.java
new file mode 100644
index 0000000..a235c0b
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalSimple.java
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalSimple {
+    
+    @Requires
+    private FooService fs;
+    
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithDI.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithDI.java
new file mode 100644
index 0000000..e4c44a9
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithDI.java
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalWithDI {
+    
+    @Requires(onTimeout="org.apache.felix.ipojo.test.scenarios.component.ProvidesSimple")
+    private FooService fs;
+    
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithEmptyArray.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithEmptyArray.java
new file mode 100644
index 0000000..695b69c
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithEmptyArray.java
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalWithEmptyArray {
+    
+    @Requires(onTimeout="empty-array")
+    private FooService fs[];
+    
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithFilter.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithFilter.java
new file mode 100644
index 0000000..f73bb7c
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithFilter.java
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalWithFilter {
+    
+    @Requires(filter="(vendor=clement)")
+    private FooService fs;
+    
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithNull.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithNull.java
new file mode 100644
index 0000000..2baf722
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithNull.java
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalWithNull {
+    
+    @Requires(onTimeout="null")
+    private FooService fs;
+    
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithNullable.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithNullable.java
new file mode 100644
index 0000000..eb4a595
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithNullable.java
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalWithNullable {
+    
+    @Requires(onTimeout="nullable")
+    private FooService fs;
+    
+}
diff --git a/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithTimeout.java b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithTimeout.java
new file mode 100644
index 0000000..06d71b4
--- /dev/null
+++ b/ipojo/tests/tests.core.annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/temporal/TemporalWithTimeout.java
@@ -0,0 +1,15 @@
+package org.apache.felix.ipojo.test.scenarios.component.temporal;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.handler.temporal.Requires;
+import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
+
+@Component
+public class TemporalWithTimeout {
+    
+    @Requires(timeout=100)
+    private FooService fs;
+    
+    
+    
+}
diff --git a/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
index a684a6b..34e7eb5 100644
--- a/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
+++ b/ipojo/tests/tests.core.bad.configurations/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerManagerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 //import org.apache.felix.ipojo.composite.CompositeManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
@@ -268,6 +269,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
index 1500115..3fca5d1 100644
--- a/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
+++ b/ipojo/tests/tests.core.external.handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -140,6 +141,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
index 81f4b4c..bb2019a 100644
--- a/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
+++ b/ipojo/tests/tests.core.lifecycle.callback/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerManagerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -140,6 +141,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
index 898e83e..af2d7ed 100644
--- a/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
@@ -55,8 +55,8 @@
 		p2.put("name", compName2);
 		ci_immediate = Utils.getComponentInstance(context, factName2, p2);
 		
-		lazzyRef = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName+")");
-		immRef =   Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName2+")");
+		lazzyRef = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName+")");
+		immRef =   Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName2+")");
 		assertNotNull("LazzyRef", lazzyRef);
 		assertNotNull("ImmRef", immRef);
 	}
diff --git a/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java
index 1a7766d..e3f29e4 100644
--- a/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/POJOCreation.java
@@ -101,13 +101,13 @@
         p7.put("name", compName7);
         ci_lazzy_sevM = Utils.getComponentInstance(context, factName7 ,p7);
 		
-		lazzyRef = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName+")");
-		immRef =   Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName2+")");
-		immRefSing = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName3+")");
-		lazzyRefSing = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName4+")");
-		lazzyRefSev = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName5+")");
-		lazzyRefSingM = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName6+")");
-		lazzyRefSevM = Utils.getServiceReference(context, Architecture.class.getName(), "(instance.name="+compName7+")");
+		lazzyRef = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName+")");
+		immRef =   Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName2+")");
+		immRefSing = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName3+")");
+		lazzyRefSing = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName4+")");
+		lazzyRefSev = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName5+")");
+		lazzyRefSingM = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName6+")");
+		lazzyRefSevM = Utils.getServiceReference(context, Architecture.class.getName(), "(architecture.instance="+compName7+")");
 		
 		lazzyArch = (Architecture) context.getService(lazzyRef);
 		immeArch = (Architecture) context.getService(immRef);
diff --git a/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
index a684a6b..85ef670 100644
--- a/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
+++ b/ipojo/tests/tests.core.manipulation/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerManagerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 //import org.apache.felix.ipojo.composite.CompositeManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
@@ -141,6 +142,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
index 81f4b4c..bb2019a 100644
--- a/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
+++ b/ipojo/tests/tests.core.service.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerManagerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -140,6 +141,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
index a684a6b..85ef670 100644
--- a/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
+++ b/ipojo/tests/tests.core.service.providing/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.felix.ipojo.Handler;
 import org.apache.felix.ipojo.HandlerManagerFactory;
 import org.apache.felix.ipojo.ServiceContext;
+import org.apache.felix.ipojo.architecture.Architecture;
 //import org.apache.felix.ipojo.composite.CompositeManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
@@ -141,6 +142,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DefaultImplementationTest.java b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DefaultImplementationTest.java
index 60be3fa..1971efb 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DefaultImplementationTest.java
+++ b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DefaultImplementationTest.java
@@ -47,13 +47,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       
-       assertTrue("Assert delay", (end - begin) >= 2000);
+      
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -121,13 +121,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
        
-       assertTrue("Assert delay", (end - begin) >= 2000);
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -159,7 +159,7 @@
        provider.stop();
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
-       DelayedProvider dp = new DelayedProvider(provider, 5000);
+       DelayedProvider dp = new DelayedProvider(provider, 400);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        boolean res = false;
@@ -201,14 +201,14 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider1, 2500);
-       DelayedProvider dp2 = new DelayedProvider(provider2, 1000);
+       DelayedProvider dp = new DelayedProvider(provider1, 250);
+       DelayedProvider dp2 = new DelayedProvider(provider2, 100);
        dp.start();
        dp2.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       assertTrue("Assert delay", (end - begin) >= 1000  && (end - begin) <= 2500);
+       assertTrue("Assert delay", (end - begin) >= 100  && (end - begin) <= 250);
        dp.stop();
        dp2.stop();
        
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayTest.java b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayTest.java
index e2c5940..1db95af 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayTest.java
+++ b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayTest.java
@@ -47,13 +47,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
        
-       assertTrue("Assert delay", (end - begin) >= 2000);
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -85,7 +85,7 @@
        provider.stop();
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
-       DelayedProvider dp = new DelayedProvider(provider, 5000);
+       DelayedProvider dp = new DelayedProvider(provider, 4000);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        try {
@@ -123,13 +123,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
        
-       assertTrue("Assert delay", (end - begin) >= 2000);
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -161,7 +161,7 @@
        provider.stop();
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
-       DelayedProvider dp = new DelayedProvider(provider, 5000);
+       DelayedProvider dp = new DelayedProvider(provider, 400);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        try {
@@ -202,14 +202,14 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider1, 2500);
-       DelayedProvider dp2 = new DelayedProvider(provider2, 1000);
+       DelayedProvider dp = new DelayedProvider(provider1, 250);
+       DelayedProvider dp2 = new DelayedProvider(provider2, 100);
        dp.start();
        dp2.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       assertTrue("Assert delay", (end - begin) >= 1000  && (end - begin) <= 2500);
+       assertTrue("Assert delay", (end - begin) >= 100  && (end - begin) <= 250);
        dp.stop();
        dp2.stop();
        
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayedProvider.java b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayedProvider.java
index 64a0a98..097e15b 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayedProvider.java
+++ b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/DelayedProvider.java
@@ -23,7 +23,7 @@
 public class DelayedProvider implements Runnable {
     
     ComponentInstance instance;
-    long delay = 5000;
+    long delay = 400;
     Thread thread;
     
     public DelayedProvider(ComponentInstance ci) {
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/EmptyArrayTest.java b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/EmptyArrayTest.java
index ba47cc6..cac0102 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/EmptyArrayTest.java
+++ b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/EmptyArrayTest.java
@@ -46,7 +46,7 @@
        provider.stop();
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
-       DelayedProvider dp = new DelayedProvider(provider, 5000);
+       DelayedProvider dp = new DelayedProvider(provider, 400);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        boolean res = false;
@@ -88,14 +88,14 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider1, 2500);
-       DelayedProvider dp2 = new DelayedProvider(provider2, 1000);
+       DelayedProvider dp = new DelayedProvider(provider1, 250);
+       DelayedProvider dp2 = new DelayedProvider(provider2, 100);
        dp.start();
        dp2.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       assertTrue("Assert delay", (end - begin) >= 1000  && (end - begin) <= 2500);
+       assertTrue("Assert delay", (end - begin) >= 100  && (end - begin) <= 250);
        dp.stop();
        dp2.stop();
        
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullTest.java b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullTest.java
index 246a7c3..84c33ad 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullTest.java
+++ b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullTest.java
@@ -47,13 +47,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
        
-       assertTrue("Assert delay", (end - begin) >= 2000);
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -121,13 +121,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
        
-       assertTrue("Assert delay", (end - begin) >= 2000);
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -159,7 +159,7 @@
        provider.stop();
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
-       DelayedProvider dp = new DelayedProvider(provider, 5000);
+       DelayedProvider dp = new DelayedProvider(provider, 400);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        boolean res = false;
@@ -201,14 +201,14 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider1, 2500);
-       DelayedProvider dp2 = new DelayedProvider(provider2, 1000);
+       DelayedProvider dp = new DelayedProvider(provider1, 250);
+       DelayedProvider dp2 = new DelayedProvider(provider2, 100);
        dp.start();
        dp2.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       assertTrue("Assert delay", (end - begin) >= 1000  && (end - begin) <= 2500);
+       assertTrue("Assert delay", (end - begin) >= 100  && (end - begin) <= 250);
        dp.stop();
        dp2.stop();
        
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullableTest.java b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullableTest.java
index 1fad94a..31a2d56 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullableTest.java
+++ b/ipojo/tests/tests.temporal.dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/temporal/NullableTest.java
@@ -47,13 +47,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       
-       assertTrue("Assert delay", (end - begin) >= 2000);
+      
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -121,13 +121,13 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider, 2000);
+       DelayedProvider dp = new DelayedProvider(provider, 200);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
        
-       assertTrue("Assert delay", (end - begin) >= 2000);
+       assertTrue("Assert delay", (end - begin) >= 200);
        
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 3", ref_cs);
@@ -159,7 +159,7 @@
        provider.stop();
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
-       DelayedProvider dp = new DelayedProvider(provider, 5000);
+       DelayedProvider dp = new DelayedProvider(provider, 400);
        dp.start();
        cs = (CheckService) context.getService(ref_cs);
        boolean res = false;
@@ -201,14 +201,14 @@
        ref_cs = Utils.getServiceReferenceByName(context, CheckService.class.getName(), un);
        assertNotNull("Check cs availability - 2", ref_cs);
        long begin = System.currentTimeMillis();
-       DelayedProvider dp = new DelayedProvider(provider1, 2500);
-       DelayedProvider dp2 = new DelayedProvider(provider2, 1000);
+       DelayedProvider dp = new DelayedProvider(provider1, 250);
+       DelayedProvider dp2 = new DelayedProvider(provider2, 100);
        dp.start();
        dp2.start();
        cs = (CheckService) context.getService(ref_cs);
        assertTrue("Check invocation - 2", cs.check());
        long end = System.currentTimeMillis();
-       assertTrue("Assert delay", (end - begin) >= 1000  && (end - begin) <= 2500);
+       assertTrue("Assert delay", (end - begin) >= 100  && (end - begin) <= 250);
        dp.stop();
        dp2.stop();
        
diff --git a/ipojo/tests/tests.temporal.dependency/src/main/resources/metadata.xml b/ipojo/tests/tests.temporal.dependency/src/main/resources/metadata.xml
index efff053..2bbf047 100644
--- a/ipojo/tests/tests.temporal.dependency/src/main/resources/metadata.xml
+++ b/ipojo/tests/tests.temporal.dependency/src/main/resources/metadata.xml
@@ -5,7 +5,7 @@
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" name="TEMPORAL-CheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000"/>
+		<temp:requires field="fs" timeout="300"/>
 		<provides/>
 	</component>
 	
@@ -30,12 +30,12 @@
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" name="TEMPORAL-NullableCheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="nullable"/>
+		<temp:requires field="fs" timeout="300" onTimeout="nullable"/>
 		<provides/>
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckServiceProvider" name="TEMPORAL-NullableMultipleCheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="nullable"/>
+		<temp:requires field="fs" timeout="300" onTimeout="nullable"/>
 		<provides/>
 	</component>
 	
@@ -51,12 +51,12 @@
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" name="TEMPORAL-DICheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="org.apache.felix.ipojo.test.scenarios.component.NullableFooProvider"/>
+		<temp:requires field="fs" timeout="300" onTimeout="org.apache.felix.ipojo.test.scenarios.component.NullableFooProvider"/>
 		<provides/>
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckServiceProvider" name="TEMPORAL-DIMultipleCheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="org.apache.felix.ipojo.test.scenarios.component.NullableFooProvider"/>
+		<temp:requires field="fs" timeout="300" onTimeout="org.apache.felix.ipojo.test.scenarios.component.NullableFooProvider"/>
 		<provides/>
 	</component>
 	
@@ -72,12 +72,12 @@
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" name="TEMPORAL-NullCheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="null"/>
+		<temp:requires field="fs" timeout="300" onTimeout="null"/>
 		<provides/>
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckServiceProvider" name="TEMPORAL-NullMultipleCheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="null"/>
+		<temp:requires field="fs" timeout="300" onTimeout="null"/>
 		<provides/>
 	</component>
 	
@@ -88,7 +88,7 @@
 	</component>
 	
 	<component classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckServiceProvider" name="TEMPORAL-EmptyMultipleCheckServiceProviderTimeout">
-		<temp:requires field="fs" timeout="4000" onTimeout="empty-array"/>
+		<temp:requires field="fs" timeout="300" onTimeout="empty-array"/>
 		<provides/>
 	</component>
 </ipojo>
\ No newline at end of file
