diff --git a/ipojo/tests/core/annotations/pom.xml b/ipojo/tests/core/annotations/pom.xml
index d1a05d4..1a1b0e1 100644
--- a/ipojo/tests/core/annotations/pom.xml
+++ b/ipojo/tests/core/annotations/pom.xml
@@ -1,111 +1,111 @@
 <!--
-	Licensed to the Apache Software Foundation (ASF) under one
-	or more contributor license agreements.  See the NOTICE file
-	distributed with this work for additional information
-	regarding copyright ownership.  The ASF licenses this file
-	to you under the Apache License, Version 2.0 (the
-	"License"); you may not use this file except in compliance
-	with the License.  You may obtain a copy of the License at
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
 
-	http://www.apache.org/licenses/LICENSE-2.0
+  http://www.apache.org/licenses/LICENSE-2.0
 
-	Unless required by applicable law or agreed to in writing,
-	software distributed under the License is distributed on an
-	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	KIND, either express or implied.  See the License for the
-	specific language governing permissions and limitations
-	under the License.
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 -->
 <project>
-	<modelVersion>4.0.0</modelVersion>
-	<packaging>bundle</packaging>
-	<name>iPOJO Annotations Test Suite</name>
-	<artifactId>tests.core.annotations</artifactId>
-	<groupId>ipojo.tests</groupId>
-	<version>1.5.0-SNAPSHOT</version>
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>${pom.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.metadata
-			</artifactId>
-			<version>${pom.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.osgi.core</artifactId>
-			<version>1.0.1</version>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>3.8.1</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
-			<version>1.1.0-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.annotations</artifactId>
-			<version>${pom.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>
-			<version>${pom.version}</version>
-		</dependency>
-	</dependencies>
+  <modelVersion>4.0.0</modelVersion>
+  <packaging>bundle</packaging>
+  <name>iPOJO Annotations Test Suite</name>
+  <artifactId>tests.core.annotations</artifactId>
+  <groupId>ipojo.tests</groupId>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo.metadata
+      </artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>1.0.1</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
+      <version>1.1.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo.annotations</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo.handler.eventadmin</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+  </dependencies>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<configuration>
-					<source>1.5</source>
-					<target>1.5</target>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<version>1.4.3</version>
-				<extensions>true</extensions>
-				<configuration>
-					<instructions>
-						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.annotations.service
-						</Export-Package>
-						<Bundle-SymbolicName>
-							${pom.artifactId}
-						</Bundle-SymbolicName>
-						<Private-Package>
-							org.apache.felix.ipojo.test*
-						</Private-Package>
-						<Test-Suite>
-							org.apache.felix.ipojo.test.scenarios.annotations.AnnotationsTestSuite
-						</Test-Suite>
-					</instructions>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>${pom.version}</version>
-				<executions>
-					<execution>
-						<goals>
-							<goal>ipojo-bundle</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <version>1.4.3</version>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Export-Package>
+              org.apache.felix.ipojo.test.scenarios.annotations.service
+            </Export-Package>
+            <Bundle-SymbolicName>
+              ${pom.artifactId}
+            </Bundle-SymbolicName>
+            <Private-Package>
+              org.apache.felix.ipojo.test*
+            </Private-Package>
+            <Test-Suite>
+              org.apache.felix.ipojo.test.scenarios.annotations.AnnotationsTestSuite
+            </Test-Suite>
+          </instructions>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-ipojo-plugin</artifactId>
+        <version>${pom.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>ipojo-bundle</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/Dependency.java b/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/Dependency.java
index ddeea7d..f69e76d 100644
--- a/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/Dependency.java
+++ b/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/annotations/Dependency.java
@@ -72,6 +72,17 @@
         assertEquals("Check fs2 bind", "bindFS2Inv", bind);
         assertEquals("Check fs2 unbind", "unbindFS2Inv", unbind);
         assertEquals("Check fs2 id", "inv", id);
+        
+        // Check mod
+        dep = getDependencyById(deps, "mod");
+        id = dep.getAttribute("id");
+        bind = getBind(dep);
+        unbind = getUnbind(dep);
+        String mod = getModified(dep);
+        assertEquals("Check mod bind", "bindMod", bind);
+        assertEquals("Check mod unbind", "unbindMod", unbind);
+        assertEquals("Check mod modified", "modifiedMod", mod);
+        assertEquals("Check mod id", "mod", id);
     }
     
     private Element getDependencyById(Element[] deps, String name) {
@@ -108,5 +119,15 @@
         }
         return null;
     }
+    
+    private String getModified(Element dep) {
+        Element[] elem = dep.getElements("callback");
+        for (int i = 0; elem != null && i < elem.length; i++) {
+            if (elem[i].getAttribute("type").equalsIgnoreCase("modified")) {
+                return elem[i].getAttribute("method");
+            }
+        }
+        return null;
+    }
 
 }
diff --git a/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Dependency.java b/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Dependency.java
index 97b053f..906fa4f 100644
--- a/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Dependency.java
+++ b/ipojo/tests/core/annotations/src/main/java/org/apache/felix/ipojo/test/scenarios/component/Dependency.java
@@ -2,6 +2,7 @@
 
 import org.apache.felix.ipojo.annotations.Bind;
 import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.annotations.Modified;
 import org.apache.felix.ipojo.annotations.Requires;
 import org.apache.felix.ipojo.annotations.Unbind;
 import org.apache.felix.ipojo.test.scenarios.annotations.service.FooService;
@@ -59,6 +60,21 @@
         
     }
     
+    @Bind(id="mod")
+    public void bindMod() {
+        
+    }
+    
+    @Unbind(id="mod")
+    public void unbindMod() {
+        
+    }
+    
+    @Modified(id="mod")
+    public void modifiedMod() {
+        
+    }
+    
     
     
 }
diff --git a/ipojo/tests/core/service-dependency/pom.xml b/ipojo/tests/core/service-dependency/pom.xml
index ba4df5c..3b112f9 100644
--- a/ipojo/tests/core/service-dependency/pom.xml
+++ b/ipojo/tests/core/service-dependency/pom.xml
@@ -1,102 +1,122 @@
 <!--
-	Licensed to the Apache Software Foundation (ASF) under one
-	or more contributor license agreements.  See the NOTICE file
-	distributed with this work for additional information
-	regarding copyright ownership.  The ASF licenses this file
-	to you under the Apache License, Version 2.0 (the
-	"License"); you may not use this file except in compliance
-	with the License.  You may obtain a copy of the License at
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
 
-	http://www.apache.org/licenses/LICENSE-2.0
+  http://www.apache.org/licenses/LICENSE-2.0
 
-	Unless required by applicable law or agreed to in writing,
-	software distributed under the License is distributed on an
-	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	KIND, either express or implied.  See the License for the
-	specific language governing permissions and limitations
-	under the License.
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 -->
 <project>
-	<modelVersion>4.0.0</modelVersion>
-	<packaging>bundle</packaging>
-	<name>iPOJO Service Dependency Test Suite</name>
-	<artifactId>tests.core.service.dependency</artifactId>
-	<groupId>ipojo.tests</groupId>
-	<version>1.5.0-SNAPSHOT</version>
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo</artifactId>
-			<version>${pom.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.metadata</artifactId>
-			<version>${pom.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.osgi.core</artifactId>
-			<version>1.0.1</version>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>3.8.1</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
-			<version>1.1.0-SNAPSHOT</version>
-		</dependency>
-	</dependencies>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<version>1.4.3</version>
-				<extensions>true</extensions>
-				<configuration>
-					<instructions>
-						<Export-Package>
-							org.apache.felix.ipojo.test.scenarios.service.dependency.service
-						</Export-Package>
-						<Bundle-SymbolicName>
-							${pom.artifactId}
-						</Bundle-SymbolicName>
-						<Private-Package>
-							org.apache.felix.ipojo.test*
-						</Private-Package>
-						<Test-Suite>
-							org.apache.felix.ipojo.test.scenarios.service.dependency.DependencyTestSuite
-						</Test-Suite>
-					</instructions>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-ipojo-plugin</artifactId>
-				<version>${pom.version}</version>
-				<executions>
-					<execution>
-						<goals>
-							<goal>ipojo-bundle</goal>
-						</goals>
-						<configuration>
-							<ignoreAnnotations>true</ignoreAnnotations>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<configuration>
-					<source>1.4</source>
-					<target>1.4</target>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
+  <modelVersion>4.0.0</modelVersion>
+  <packaging>bundle</packaging>
+  <name>iPOJO Service Dependency Test Suite</name>
+  <artifactId>tests.core.service.dependency</artifactId>
+  <groupId>ipojo.tests</groupId>
+  <version>1.5.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo.metadata</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>1.0.1</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
+      <version>1.1.0-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <version>1.4.3</version>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Export-Package>
+              org.apache.felix.ipojo.test.scenarios.service.dependency.service
+            </Export-Package>
+            <Bundle-SymbolicName>
+              ${pom.artifactId}
+            </Bundle-SymbolicName>
+            <Private-Package>
+              org.apache.felix.ipojo.test*
+            </Private-Package>
+            <Test-Suite>
+              org.apache.felix.ipojo.test.scenarios.service.dependency.DependencyTestSuite
+            </Test-Suite>
+          </instructions>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-ipojo-plugin</artifactId>
+        <version>${pom.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>ipojo-bundle</goal>
+            </goals>
+            <configuration>
+              <ignoreAnnotations>true</ignoreAnnotations>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.4</source>
+          <target>1.4</target>
+        </configuration>
+      </plugin>
+      
+      <!--
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-junit4osgi-plugin</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <configuration>
+              <configuration>
+              <org.osgi.http.port>8083</org.osgi.http.port>
+              </configuration>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      -->
+      </plugins>
+  </build>
 </project>
diff --git a/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
index 54af644..0cbcafb 100644
--- a/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
+++ b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceProvider.java
@@ -28,74 +28,111 @@
 
 public class CheckServiceProvider extends CheckProviderParentClass implements CheckService {
     
-	FooService fs;
-	
-	int simpleB = 0;
-	int objectB = 0;
-	int refB = 0;
-	int bothB = 0;
-	int mapB = 0;
-	int dictB = 0;
+    FooService fs;
+    
+    int simpleB = 0;
+    int objectB = 0;
+    int refB = 0;
+    int bothB = 0;
+    int mapB = 0;
+    int dictB = 0;
+    
+    int modified = 0;
 
-	public boolean check() {
-		return fs.foo();
-	}
+    public boolean check() {
+        return fs.foo();
+    }
 
-	public Properties getProps() {
-		Properties props = new Properties();
-		props.put("voidB", new Integer(simpleB));
-		props.put("objectB", new Integer(objectB));
-		props.put("refB", new Integer(refB));
-		props.put("bothB", new Integer(bothB));
-		props.put("voidU", new Integer(simpleU));
-		props.put("objectU", new Integer(objectU));
-		props.put("refU", new Integer(refU));
-		props.put("bothU", new Integer(bothU));
-		props.put("mapB", new Integer(mapB));
-		props.put("dictB", new Integer(dictB));
-		props.put("mapU", new Integer(mapU));
-		props.put("dictU", new Integer(dictU));
-		if (fs != null) {
-		    props.put("result", new Boolean(fs.foo()));
-		    props.put("boolean", new Boolean(fs.getBoolean()));
-		    props.put("int", new Integer(fs.getInt()));
-		    props.put("long", new Long(fs.getLong()));
-		    props.put("double", new Double(fs.getDouble()));
-		    if(fs.getObject() != null) { props.put("object", fs.getObject()); }
-		}
+    public Properties getProps() {
+        Properties props = new Properties();
+        props.put("voidB", new Integer(simpleB));
+        props.put("objectB", new Integer(objectB));
+        props.put("refB", new Integer(refB));
+        props.put("bothB", new Integer(bothB));
+        props.put("voidU", new Integer(simpleU));
+        props.put("objectU", new Integer(objectU));
+        props.put("refU", new Integer(refU));
+        props.put("bothU", new Integer(bothU));
+        props.put("mapB", new Integer(mapB));
+        props.put("dictB", new Integer(dictB));
+        props.put("mapU", new Integer(mapU));
+        props.put("dictU", new Integer(dictU));
+        if (fs != null) {
+            props.put("result", new Boolean(fs.foo()));
+            props.put("boolean", new Boolean(fs.getBoolean()));
+            props.put("int", new Integer(fs.getInt()));
+            props.put("long", new Long(fs.getLong()));
+            props.put("double", new Double(fs.getDouble()));
+            if(fs.getObject() != null) { props.put("object", fs.getObject()); }
+        }
         props.put("static", CheckService.foo);
         props.put("class", CheckService.class.getName());
-		return props;
-	}
-	
-	private void voidBind() {
-		simpleB++;
-	}
-	
-	protected void objectBind(FooService o) {
-	    if (o == null) {
-	        System.err.println("Bind receive null !!! ");
-	        return;
-	    }
-		if(o != null && o instanceof FooService) { objectB++; }
-	}
-	
-	public void refBind(ServiceReference sr) {
-		if(sr != null) { refB++; }
-	}
-	
+        
+        
+        // Add modified
+        props.put("modified", new Integer(modified));
+        
+        return props;
+    }
+    
+    private void voidBind() {
+        simpleB++;
+    }
+    
+    public void voidModify() {
+        modified ++;
+    }
+    
+    protected void objectBind(FooService o) {
+        if (o == null) {
+            System.err.println("Bind receive null !!! ");
+            return;
+        }
+        if(o != null && o instanceof FooService) { objectB++; }
+    }
+    
+    protected void objectModify(FooService o) {
+        if (o == null) {
+            System.err.println("Bind receive null !!! [" + modified + "]");
+            return;
+        }
+        if(o != null && o instanceof FooService) { modified++; }
+    }
+    
+    public void refBind(ServiceReference sr) {
+        if(sr != null) { refB++; }
+    }
+    
+    public void refModify(ServiceReference sr) {
+        if(sr != null) { modified++; }
+    }
+    
     public void bothBind(FooService o, ServiceReference sr) {
-	    if(sr != null && o != null && o instanceof FooService) { bothB++; }
-	}
+        if(sr != null && o != null && o instanceof FooService) { bothB++; }
+    }
+    
+    public void bothModify(FooService o, ServiceReference sr) {
+        if(sr != null && o != null && o instanceof FooService) { modified++; }
+    }
     
     protected void propertiesDictionaryBind(FooService o, Dictionary props) {
         if(props != null && o != null && o instanceof FooService && props.size() > 0) { dictB++; }
         fs = o;
     }   
     
+    protected void propertiesDictionaryModify(FooService o, Dictionary props) {
+        if(props != null && o != null && o instanceof FooService && props.size() > 0) { modified++; }
+        fs = o;
+    }   
+    
     protected void propertiesMapBind(FooService o, Map props) {
         if(props != null && o != null && o instanceof FooService && props.size() > 0) { mapB++; }
         fs = o;
-    }   
+    } 
+    
+    protected void propertiesMapModify(FooService o, Map props) {
+        if(props != null && o != null && o instanceof FooService && props.size() > 0) { modified++; }
+        fs = o;
+    } 
 
 }
diff --git a/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType2.java b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType2.java
new file mode 100644
index 0000000..d57a532
--- /dev/null
+++ b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/component/FooProviderType2.java
@@ -0,0 +1,68 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.component;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+import org.osgi.framework.BundleContext;
+
+public class FooProviderType2 implements FooService {
+    
+    private int m_bar;  // Service property.
+    private String m_foo;
+    
+    private BundleContext m_context;
+    
+    private static int count = 0;
+    
+  
+    public boolean foo() {
+        // Update
+        if (m_foo.equals("foo")) {
+            m_foo = "bar";
+        } else {
+            m_foo = "foo";
+        }
+        return true;
+    }
+
+    public Properties fooProps() {
+        Properties p = new Properties();
+        p.put("bar", new Integer(m_bar));
+        if(m_foo != null) {
+            p.put("foo", m_foo);
+        }
+        p.put("context", m_context);
+        
+        p.put("count", new Integer(count));
+        return p;
+    }
+    
+    public boolean getBoolean() { return true; }
+
+    public double getDouble() { return 1.0; }
+
+    public int getInt() { return 1; }
+
+    public long getLong() { return 1; }
+
+    public Boolean getObject() { return new Boolean(true); }
+    
+}
diff --git a/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java
index 668530a..fb6eb1c 100644
--- a/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java
+++ b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/DependencyTestSuite.java
@@ -26,17 +26,17 @@
 
 public class DependencyTestSuite {
 
-	public static Test suite(BundleContext bc) {
-		OSGiTestSuite ots = new OSGiTestSuite("Service Dependencies Test Suite", bc);
-		ots.addTestSuite(SimpleDependencies.class);
-		ots.addTestSuite(OptionalDependencies.class);
-		ots.addTestSuite(OptionalNoNullableDependencies.class);
-		ots.addTestSuite(MultipleDependencies.class);
-		ots.addTestSuite(OptionalMultipleDependencies.class);
-		ots.addTestSuite(DelayedSimpleDependencies.class);
-		ots.addTestSuite(DelayedOptionalDependencies.class);
-		ots.addTestSuite(DelayedMultipleDependencies.class);
-		ots.addTestSuite(DelayedOptionalMultipleDependencies.class);
+    public static Test suite(BundleContext bc) {
+        OSGiTestSuite ots = new OSGiTestSuite("Service Dependencies Test Suite", bc);
+        ots.addTestSuite(SimpleDependencies.class);
+        ots.addTestSuite(OptionalDependencies.class);
+        ots.addTestSuite(OptionalNoNullableDependencies.class);
+        ots.addTestSuite(MultipleDependencies.class);
+        ots.addTestSuite(OptionalMultipleDependencies.class);
+        ots.addTestSuite(DelayedSimpleDependencies.class);
+        ots.addTestSuite(DelayedOptionalDependencies.class);
+        ots.addTestSuite(DelayedMultipleDependencies.class);
+        ots.addTestSuite(DelayedOptionalMultipleDependencies.class);
         ots.addTestSuite(MethodSimpleDependencies.class);
         ots.addTestSuite(MethodOptionalDependencies.class);
         ots.addTestSuite(MethodMultipleDependencies.class);
@@ -51,7 +51,8 @@
         ots.addTestSuite(VectorMultipleDependencies.class);
         ots.addTestSuite(SetMultipleDependencies.class);
         ots.addTestSuite(CollectionMultipleDependencies.class);
-		return ots;
-	}
+        ots.addTestSuite(ModifyDependencies.class);
+        return ots;
+    }
 
 }
diff --git a/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ModifyDependencies.java b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ModifyDependencies.java
new file mode 100644
index 0000000..c99951f
--- /dev/null
+++ b/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ModifyDependencies.java
@@ -0,0 +1,406 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.architecture.Architecture;
+import org.apache.felix.ipojo.architecture.InstanceDescription;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
+public class ModifyDependencies extends OSGiTestCase {
+    
+    ComponentInstance instance2, instance3, instance4, instance5, instance7, instance8;
+    ComponentInstance fooProvider;
+    
+    public void setUp() {
+        try {
+            Properties prov = new Properties();
+            prov.put("instance.name","FooProvider");
+            fooProvider = Utils.getFactoryByName(getContext(), "FooProviderType-Updatable").createComponentInstance(prov);
+            fooProvider.stop();
+        
+            Properties i2 = new Properties();
+            i2.put("instance.name","Void");
+            instance2 = Utils.getFactoryByName(getContext(), "VoidModifyCheckServiceProvider").createComponentInstance(i2);
+        
+            Properties i3 = new Properties();
+            i3.put("instance.name","Object");
+            instance3 = Utils.getFactoryByName(getContext(), "ObjectModifyCheckServiceProvider").createComponentInstance(i3);
+        
+            Properties i4 = new Properties();
+            i4.put("instance.name","Ref");
+            instance4 = Utils.getFactoryByName(getContext(), "RefModifyCheckServiceProvider").createComponentInstance(i4);
+            
+            Properties i5 = new Properties();
+            i5.put("instance.name","Both");
+            instance5 = Utils.getFactoryByName(getContext(), "BothModifyCheckServiceProvider").createComponentInstance(i5);
+                        
+            Properties i7 = new Properties();
+            i7.put("instance.name","Map");
+            instance7 = Utils.getFactoryByName(getContext(), "MapModifyCheckServiceProvider").createComponentInstance(i7);
+            
+            Properties i8 = new Properties();
+            i8.put("instance.name","Dictionary");
+            instance8 = Utils.getFactoryByName(getContext(), "DictModifyCheckServiceProvider").createComponentInstance(i8);
+        } catch(Exception e) { 
+            e.printStackTrace();
+            fail(e.getMessage()); }
+        
+    }
+    
+    public void tearDown() {
+        instance2.dispose();
+        instance3.dispose();
+        instance4.dispose();
+        instance5.dispose();
+        instance7.dispose();
+        instance8.dispose();
+        fooProvider.dispose();
+        instance2 = null;
+        instance3 = null;
+        instance4 = null;
+        instance5 = null;
+        instance7 = null;
+        instance8 = null;
+        fooProvider = null;
+    }
+    
+   public void testVoid() {
+        ServiceReference arch_ref = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), instance2.getInstanceName());
+        assertNotNull("Check architecture availability", arch_ref);
+        InstanceDescription id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+        
+        ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        Object o = getContext().getService(cs_ref);
+        CheckService cs = (CheckService) o;
+        Properties props = cs.getProps();
+        //Check properties
+        assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+        assertEquals("check void bind invocation -1 ("+((Integer)props.get("voidB")).intValue()+")", ((Integer)props.get("voidB")).intValue(), 1);
+        assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0);
+        assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0);
+        assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0);
+        assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0);
+        assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0);
+        assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0);
+        assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+        assertEquals("check modify -1", ((Integer)props.get("modified")).intValue(), 1); // Already called inside the method
+        
+        
+        ServiceReference ref = Utils.getServiceReferenceByName(getContext(), FooService.class.getName(), fooProvider.getInstanceName());
+        FooService fs = (FooService) getContext().getService(ref);
+        
+        fs.foo(); // Update
+        
+        props = cs.getProps();
+        //Check properties
+        assertTrue("check CheckService invocation -1.1", ((Boolean)props.get("result")).booleanValue());
+        assertEquals("check void bind invocation -1.1 ("+((Integer)props.get("voidB")).intValue()+")", ((Integer)props.get("voidB")).intValue(), 1);
+        assertEquals("check void unbind callback invocation -1.1", ((Integer)props.get("voidU")).intValue(), 0);
+        assertEquals("check object bind callback invocation -1.1", ((Integer)props.get("objectB")).intValue(), 0);
+        assertEquals("check object unbind callback invocation -1.1", ((Integer)props.get("objectU")).intValue(), 0);
+        assertEquals("check ref bind callback invocation -1.1", ((Integer)props.get("refB")).intValue(), 0);
+        assertEquals("check ref unbind callback invocation -1.1", ((Integer)props.get("refU")).intValue(), 0);
+        assertEquals("check both bind callback invocation -1.1", ((Integer)props.get("bothB")).intValue(), 0);
+        assertEquals("check both unbind callback invocation -1.1", ((Integer)props.get("bothU")).intValue(), 0);
+        assertEquals("check modify -1.1", ((Integer)props.get("modified")).intValue(), 3); // 1 (first foo) + 1 (our foo) + 1 (check foo)        
+        fooProvider.stop();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        fs = null;
+        getContext().ungetService(arch_ref);
+        getContext().ungetService(cs_ref);
+        getContext().ungetService(ref);
+
+    }
+    
+    public void testObject() {
+        ServiceReference arch_ref = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), instance3.getInstanceName());
+        assertNotNull("Check architecture availability", arch_ref);
+        InstanceDescription id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+        
+        ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        CheckService cs = (CheckService) getContext().getService(cs_ref);
+        Properties props = cs.getProps();
+        //Check properties
+        assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+        assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0);
+        assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0);
+        assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 1);
+        assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0);
+        assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0);
+        assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0);
+        assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0);
+        assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+        assertEquals("check modify -1 (" + ((Integer)props.get("modified")).intValue() + ")", ((Integer)props.get("modified")).intValue(), 1);
+
+        ServiceReference ref = Utils.getServiceReferenceByName(getContext(), FooService.class.getName(), fooProvider.getInstanceName());
+        FooService fs = (FooService) getContext().getService(ref);
+        
+        fs.foo(); // Update
+        
+        props = cs.getProps();
+        //Check properties
+        assertEquals("check modify -1.1", ((Integer)props.get("modified")).intValue(), 3);
+        
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        fs = null;
+        getContext().ungetService(arch_ref);
+        getContext().ungetService(cs_ref);
+        getContext().ungetService(ref);	
+    }
+    
+    public void testRef() {
+        ServiceReference arch_ref = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), instance4.getInstanceName());
+        assertNotNull("Check architecture availability", arch_ref);
+        InstanceDescription id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+        
+        ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance4.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        CheckService cs = (CheckService) getContext().getService(cs_ref);
+        Properties props = cs.getProps();
+        //Check properties
+        assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+        assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0);
+        assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0);
+        assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0);
+        assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0);
+        assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 1);
+        assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0);
+        assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0);
+        assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+        assertEquals("check modify -1 (" + ((Integer)props.get("modified")).intValue() + ")", ((Integer)props.get("modified")).intValue(), 1);
+
+        ServiceReference ref = Utils.getServiceReferenceByName(getContext(), FooService.class.getName(), fooProvider.getInstanceName());
+        FooService fs = (FooService) getContext().getService(ref);
+        
+        fs.foo(); // Update
+        
+        props = cs.getProps();
+        //Check properties
+        assertEquals("check modify -1.1", ((Integer)props.get("modified")).intValue(), 3);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        fs = null;
+        getContext().ungetService(arch_ref);
+        getContext().ungetService(cs_ref);
+        getContext().ungetService(ref); 
+    }
+    
+    public void testBoth() {
+        ServiceReference arch_ref = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), instance5.getInstanceName());
+        assertNotNull("Check architecture availability", arch_ref);
+        InstanceDescription id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+        
+        ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance5.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        CheckService cs = (CheckService) getContext().getService(cs_ref);
+        Properties props = cs.getProps();
+        //Check properties
+        assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+        assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0);
+        assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0);
+        assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0);
+        assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0);
+        assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0);
+        assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0);
+        assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 1);
+        assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+        assertEquals("check modify -1 (" + ((Integer)props.get("modified")).intValue() + ")", ((Integer)props.get("modified")).intValue(), 1);
+
+        ServiceReference ref = Utils.getServiceReferenceByName(getContext(), FooService.class.getName(), fooProvider.getInstanceName());
+        FooService fs = (FooService) getContext().getService(ref);
+        
+        fs.foo(); // Update
+        
+        props = cs.getProps();
+        //Check properties
+        assertEquals("check modify -1.1", ((Integer)props.get("modified")).intValue(), 3);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        fs = null;
+        getContext().ungetService(arch_ref);
+        getContext().ungetService(cs_ref);
+        getContext().ungetService(ref); 
+    }
+
+    
+    public void testMap() {
+        ServiceReference arch_ref = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), instance7.getInstanceName());
+        assertNotNull("Check architecture availability", arch_ref);
+        InstanceDescription id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+        
+        ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance7.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        CheckService cs = (CheckService) getContext().getService(cs_ref);
+        Properties props = cs.getProps();
+        //Check properties
+        assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+        assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0);
+        assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0);
+        assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0);
+        assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0);
+        assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0);
+        assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0);
+        assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0);
+        assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+        assertEquals("check map bind callback invocation -1", ((Integer)props.get("mapB")).intValue(), 1);
+        assertEquals("check map unbind callback invocation -1", ((Integer)props.get("mapU")).intValue(), 0);
+        assertEquals("check dict bind callback invocation -1", ((Integer)props.get("dictB")).intValue(), 0);
+        assertEquals("check dict unbind callback invocation -1", ((Integer)props.get("dictU")).intValue(), 0);
+        assertEquals("check modify -1 (" + ((Integer)props.get("modified")).intValue() + ")", ((Integer)props.get("modified")).intValue(), 1);
+
+        ServiceReference ref = Utils.getServiceReferenceByName(getContext(), FooService.class.getName(), fooProvider.getInstanceName());
+        FooService fs = (FooService) getContext().getService(ref);
+        
+        fs.foo(); // Update
+        
+        props = cs.getProps();
+        //Check properties
+        assertEquals("check modify -1.1", ((Integer)props.get("modified")).intValue(), 3);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        fs = null;
+        getContext().ungetService(arch_ref);
+        getContext().ungetService(cs_ref);
+        getContext().ungetService(ref); 
+    }
+    
+       public void testDict() {
+            ServiceReference arch_ref = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), instance8.getInstanceName());
+            assertNotNull("Check architecture availability", arch_ref);
+            InstanceDescription id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+            assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID);
+            
+            fooProvider.start();
+            
+            id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+            assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+            
+            ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance8.getInstanceName());
+            assertNotNull("Check CheckService availability", cs_ref);
+            CheckService cs = (CheckService) getContext().getService(cs_ref);
+            Properties props = cs.getProps();
+            //Check properties
+            assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+            assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0);
+            assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0);
+            assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0);
+            assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0);
+            assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0);
+            assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0);
+            assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0);
+            assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+            assertEquals("check map bind callback invocation -1", ((Integer)props.get("mapB")).intValue(), 0);
+            assertEquals("check map unbind callback invocation -1", ((Integer)props.get("mapU")).intValue(), 0);
+            assertEquals("check dict bind callback invocation -1", ((Integer)props.get("dictB")).intValue(), 1);
+            assertEquals("check dict unbind callback invocation -1", ((Integer)props.get("dictU")).intValue(), 0);
+            assertEquals("check modify -1 (" + ((Integer)props.get("modified")).intValue() + ")", ((Integer)props.get("modified")).intValue(), 1);
+
+            ServiceReference ref = Utils.getServiceReferenceByName(getContext(), FooService.class.getName(), fooProvider.getInstanceName());
+            FooService fs = (FooService) getContext().getService(ref);
+            
+            fs.foo(); // Update
+            
+            props = cs.getProps();
+            //Check properties
+            assertEquals("check modify -1.1", ((Integer)props.get("modified")).intValue(), 3);
+            
+            fooProvider.stop();
+            
+            id = ((Architecture) getContext().getService(arch_ref)).getInstanceDescription();
+            assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+            
+            id = null;
+            cs = null;
+            fs = null;
+            getContext().ungetService(arch_ref);
+            getContext().ungetService(cs_ref);
+            getContext().ungetService(ref); 
+        }
+
+}
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 bb49773..d490139 100644
--- a/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml
@@ -1,670 +1,744 @@
 <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.test.scenarios.component.FooProviderType1"
-		name="FooProviderType-1" architecture="true">
-		<provides />
-	</component>
-	
-	<!--  Simple Dependencies -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="SimpleCheckServiceProvider" architecture="true">
-		<requires field="fs" />
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="VoidCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="voidBind" />
-			<callback type="unbind" method="voidUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="ObjectCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="RefCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="BothCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-		<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="MapCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DictCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  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.CheckServiceProvider"
-		name="DoubleCheckServiceProvider" architecture="true">
-		<requires>
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<requires field="fs" />
-		<provides />
-	</component>
+ -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+    name="FooProviderType-1" architecture="true">
+    <provides />
+  </component>
+  
+  <!--  Simple Dependencies -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="SimpleCheckServiceProvider" architecture="true">
+    <requires field="fs" />
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="VoidCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ObjectCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="RefCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="BothCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+    <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="MapCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DictCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MObjectCheckServiceProvider" architecture="true">
-		<requires>
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MRefCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MBothCheckServiceProvider" architecture="true">
-		<requires>
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MMapCheckServiceProvider" architecture="true">
-		<requires>
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MDictCheckServiceProvider" architecture="true">
-		<requires>
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DoubleCheckServiceProvider" architecture="true">
+    <requires>
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <requires field="fs" />
+    <provides />
+  </component>
 
-	<!-- Simple & Optional Dependencies -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="SimpleOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" id="FooService"/>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="SimpleOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false" />
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="VoidOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="voidBind" />
-			<callback type="unbind" method="voidUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="VoidOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false">
-			<callback type="bind" method="voidBind" />
-			<callback type="unbind" method="voidUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="ObjectOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="ObjectOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="RefOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="RefOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="BothOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="MapOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DictOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>	
-	
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="BothOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="MapOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DictOptionalNoNullableCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true" nullable="false">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MObjectCheckServiceProvider" architecture="true">
+    <requires>
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MRefCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MBothCheckServiceProvider" architecture="true">
+    <requires>
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MMapCheckServiceProvider" architecture="true">
+    <requires>
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MDictCheckServiceProvider" architecture="true">
+    <requires>
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MObjectOptionalCheckServiceProvider" architecture="true">
-		<requires optional="true">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MRefOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MBothOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MMapOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="MDictOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  <!-- Simple & Optional Dependencies -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="SimpleOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" id="FooService"/>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="SimpleOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false" />
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="VoidOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="VoidOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ObjectOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ObjectOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="RefOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="RefOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="BothOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="MapOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DictOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>	
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="BothOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="MapOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DictOptionalNoNullableCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" nullable="false">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
+
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MObjectOptionalCheckServiceProvider" architecture="true">
+    <requires optional="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MRefOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MBothOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MMapOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="MDictOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
 
 
-	<!-- Simple & Optional Dependencies with default-implementation -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DISimpleOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl" />
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DIVoidOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="voidBind" />
-			<callback type="unbind" method="voidUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DIObjectOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DIRefOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DIBothOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DIMapOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
-		name="DIDictOptionalCheckServiceProvider" architecture="true">
-		<requires field="fs" optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  <!-- Simple & Optional Dependencies with default-implementation -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DISimpleOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl" />
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DIVoidOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DIObjectOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DIRefOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DIBothOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DIMapOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DIDictOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="DIMObjectOptionalCheckServiceProvider" architecture="true">
-		<requires optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="DIMRefOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="DIMBothOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="DIMMapOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
-		name="DIMDictOptionalCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			optional="true"
-			default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="DIMObjectOptionalCheckServiceProvider" architecture="true">
+    <requires optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="DIMRefOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="DIMBothOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="DIMMapOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider"
+    name="DIMDictOptionalCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      optional="true"
+      default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
 
-	<!--  Multiple Dependencies -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="SimpleMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs" />
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="VoidMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="voidBind" />
-			<callback type="unbind" method="voidUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="ObjectMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="RefMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="BothMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="MapMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="DictMultipleCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
-	
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MObjectMultipleCheckServiceProvider" architecture="true">
-		<requires aggregate="true">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MRefMultipleCheckServiceProvider" architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			aggregate="true">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MBothMultipleCheckServiceProvider" architecture="true">
-		<requires aggregate="true">
-			<callback type="bind" method="bothBind" />
-			<callback type="unbind" method="bothUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MMapMultipleCheckServiceProvider" architecture="true">
-		<requires aggregate="true">
-			<callback type="bind" method="propertiesMapBind" />
-			<callback type="unbind" method="propertiesMapUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MDictMultipleCheckServiceProvider" architecture="true">
-		<requires aggregate="true">
-			<callback type="bind" method="propertiesDictionaryBind" />
-			<callback type="unbind" method="propertiesDictionaryUnbind" />
-		</requires>
-		<provides />
-	</component>
+  <!--  Multiple Dependencies -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="SimpleMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" />
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="VoidMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ObjectMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="RefMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="BothMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="MapMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="DictMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MObjectMultipleCheckServiceProvider" architecture="true">
+    <requires aggregate="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MRefMultipleCheckServiceProvider" architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      aggregate="true">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MBothMultipleCheckServiceProvider" architecture="true">
+    <requires aggregate="true">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MMapMultipleCheckServiceProvider" architecture="true">
+    <requires aggregate="true">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MDictMultipleCheckServiceProvider" architecture="true">
+    <requires aggregate="true">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
 
-	<!-- Multiple & Optional Dependencies -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="SimpleOptionalMultipleCheckServiceProvider"
-		architecture="true">
-		<requires field="fs" optional="true" />
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="VoidOptionalMultipleCheckServiceProvider"
-		architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="voidBind" />
-			<callback type="unbind" method="voidUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="ObjectOptionalMultipleCheckServiceProvider"
-		architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-		name="RefOptionalMultipleCheckServiceProvider"
-		architecture="true">
-		<requires field="fs" optional="true">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MObjectOptionalMultipleCheckServiceProvider"
-		architecture="true">
-		<requires aggregate="true" optional="true">
-			<callback type="bind" method="objectBind" />
-			<callback type="unbind" method="objectUnbind" />
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
-		name="MRefOptionalMultipleCheckServiceProvider"
-		architecture="true">
-		<requires
-			specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
-			aggregate="true" optional="true">
-			<callback type="bind" method="refBind" />
-			<callback type="unbind" method="refUnbind" />
-		</requires>
-		<provides />
-	</component>
-	
-	<!-- Aggregate dependency as List -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
-		name="SimpleListCheckServiceProvider" architecture="true">
-		<requires field="fs" specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
-		name="OptionalListCheckServiceProvider"
-		architecture="true">
-		<requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
-		<provides />
-	</component>
-	
-	<!-- Aggregate dependency as Vector -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.VectorCheckService"
-		name="SimpleVectorCheckServiceProvider" architecture="true">
-		<requires field="fs">
-			<callback type="bind" method="objectBind"/>
-			<callback type="unbind" method="objectUnbind"/>
-		</requires>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.VectorCheckService"
-		name="OptionalVectorCheckServiceProvider"
-		architecture="true">
-		<requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
-		<provides />
-	</component>
-	
-	<!-- Aggregate dependency as Set -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
-		name="SimpleSetCheckServiceProvider" architecture="true">
-		<requires field="fs" specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
-		name="OptionalSetCheckServiceProvider"
-		architecture="true">
-		<requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
-		<provides />
-	</component>
-	
-	<!-- Aggregate dependency as Collection -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
-		name="SimpleCollectionCheckServiceProvider" architecture="true">
-		<requires field="fs" specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
-		name="OptionalCollectionCheckServiceProvider"
-		architecture="true">
-		<requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
-		<provides />
-	</component>
-	
+  <!-- Multiple & Optional Dependencies -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="SimpleOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true" />
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="VoidOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ObjectOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="RefOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MObjectOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires aggregate="true" optional="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
+    name="MRefOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires
+      specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
+      aggregate="true" optional="true">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  
+  <!-- Aggregate dependency as List -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
+    name="SimpleListCheckServiceProvider" architecture="true">
+    <requires field="fs" specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
+    name="OptionalListCheckServiceProvider"
+    architecture="true">
+    <requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
+    <provides />
+  </component>
+  
+  <!-- Aggregate dependency as Vector -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.VectorCheckService"
+    name="SimpleVectorCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="objectBind"/>
+      <callback type="unbind" method="objectUnbind"/>
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.VectorCheckService"
+    name="OptionalVectorCheckServiceProvider"
+    architecture="true">
+    <requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
+    <provides />
+  </component>
+  
+  <!-- Aggregate dependency as Set -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
+    name="SimpleSetCheckServiceProvider" architecture="true">
+    <requires field="fs" specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
+    name="OptionalSetCheckServiceProvider"
+    architecture="true">
+    <requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
+    <provides />
+  </component>
+  
+  <!-- Aggregate dependency as Collection -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
+    name="SimpleCollectionCheckServiceProvider" architecture="true">
+    <requires field="fs" specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
+    name="OptionalCollectionCheckServiceProvider"
+    architecture="true">
+    <requires specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService" field="fs" optional="true" />
+    <provides />
+  </component>
+  
+  
+  <!-- Modify method test -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType2"
+    name="FooProviderType-Updatable" architecture="true">
+    <provides>
+      <property name="foo" field="m_foo" value="foo"/> 
+    </provides>
+  </component>
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="VoidModifyCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+      <callback type="modified" method="voidModify"/>
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ObjectModifyCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+      <callback type="modified" method="objectModify" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="RefModifyCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+      <callback type="modified" method="refModify" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="BothModifyCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+      <callback type="modified" method="bothModify" />
+    </requires>
+    <provides />
+  </component>
+    <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="MapModifyCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+      <callback type="modified" method="propertiesMapModify" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="DictModifyCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+      <callback type="modified" method="propertiesDictionaryModify" />
+    </requires>
+    <provides />
+  </component>
+  
 </ipojo>
