diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedService.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedService.java
index 64475f4..a539984 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedService.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedService.java
@@ -549,7 +549,7 @@
 
             if (! alreadyExisting) {
                 try {
-                    Property prop = new Property(key, null, null, value.toString(), value.getClass().getName(), getInstanceManager(), m_handler);
+                    Property prop = new Property(key, null, null, value, getInstanceManager(), m_handler);
                     addProperty(prop);
                     updated = true;
                 } catch (ConfigurationException e) {
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
index 084255d..170275a 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
@@ -518,6 +518,7 @@
      */
     public void addProperties(Dictionary dict) {
         for (int i = 0; i < m_providedServices.length; i++) {
+            System.out.println("adding properties " + dict);
             m_providedServices[i].addProperties(dict);
             m_providedServices[i].update();
         }
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
index 87d1e9f..13e2282 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
@@ -141,6 +141,48 @@
         }
     }
 
+    /**
+     * Creates a property.
+     * At least the method or the field need
+     * to be specified.
+     * @param name the name of the property (optional)
+     * @param field the name of the field
+     * @param method the method name
+     * @param value the initial value of the property (optional)
+     * @param manager the instance manager
+     * @param handler the handler object which manage this property.
+     * @throws ConfigurationException if the property value cannot be set.
+     */
+    public Property(String name, String field, String method, Object value, InstanceManager manager, Handler handler) throws ConfigurationException {
+        m_handler = handler;
+        m_manager = manager;
+        m_field = field;
+
+        if (value == null) {
+            throw new ConfigurationException("Cannot create properties without a value");
+        }
+
+        if (name == null) {
+            if (m_field == null) {
+                m_name = method;
+            } else {
+                m_name = field;
+            }
+        } else {
+            m_name = name;
+        }
+
+        m_type = value.getClass();
+        m_value = value;
+        m_defaultValue = m_value;
+
+        if (method != null) {
+            m_method = new Callback(method, new String[] { m_type.getName() }, false, manager);
+        } else {
+            m_method = null;
+        }
+    }
+
     public Property(String name, String field, String method, int index,
             String value, String type, InstanceManager manager, Handler handler) throws ConfigurationException {
         this(name, field, method, value, type, manager, handler);
diff --git a/ipojo/core/src/test/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandlerTest.java b/ipojo/core/src/test/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandlerTest.java
index 164f7ec..0034064 100644
--- a/ipojo/core/src/test/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandlerTest.java
+++ b/ipojo/core/src/test/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandlerTest.java
@@ -3,9 +3,7 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.felix.ipojo.ComponentFactory;
-import org.apache.felix.ipojo.ConfigurationException;
-import org.apache.felix.ipojo.InstanceManager;
+import org.apache.felix.ipojo.*;
 import org.apache.felix.ipojo.architecture.ComponentTypeDescription;
 import org.apache.felix.ipojo.handlers.dependency.DependencyHandler;
 import org.apache.felix.ipojo.metadata.Attribute;
@@ -16,6 +14,11 @@
 import org.mockito.Mockito;
 import org.osgi.framework.BundleContext;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Dictionary;
+import java.util.Properties;
+
 public class ProvidedServiceHandlerTest extends TestCase {
 
     BundleContext context;
@@ -23,8 +26,9 @@
     InstanceManager im;
     ComponentTypeDescription desc;
     ProvidedServiceHandler handler;
+    Logger logger;
 
-    public void setUp() {
+    public void setUp() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
         context = (BundleContext) Mockito.mock(BundleContext.class);
         Mockito.when(context.getProperty(DependencyHandler.PROXY_TYPE_PROPERTY)).thenReturn(null);
         Mockito.when(context.getProperty(Logger.IPOJO_LOG_LEVEL_PROP)).thenReturn(null);
@@ -32,11 +36,14 @@
 
         factory = (ComponentFactory) Mockito.mock(ComponentFactory.class);
         Mockito.when(factory.getBundleClassLoader()).thenReturn(ProvidedServiceHandler.class.getClassLoader());
-        Mockito.when(factory.getLogger()).thenReturn(new Logger(context, "TEST", Logger.INFO));
+        logger = Mockito.spy(new Logger(context, "TEST", Logger.INFO));
+        Mockito.when(factory.getLogger()).thenReturn(logger);
 
         im = (InstanceManager) Mockito.mock(InstanceManager.class);
         Mockito.when(im.getContext()).thenReturn(context);
+        Mockito.when(im.getGlobalContext()).thenReturn(context);
         Mockito.when(im.getFactory()).thenReturn(factory);
+        Mockito.when(im.getInstanceName()).thenReturn("an.instance");
 
         desc = (ComponentTypeDescription) Mockito.mock(ComponentTypeDescription.class);
         Mockito.when(desc.getFactory()).thenReturn(factory);
@@ -44,6 +51,12 @@
 
         handler = new ProvidedServiceHandler();
         handler.setFactory(factory);
+
+        // Attach the handler
+        Method method = PrimitiveHandler.class.getDeclaredMethod("attach", new Class[]{ComponentInstance.class});
+        method.setAccessible(true);
+        method.invoke(handler, new Object[]{im});
+
     }
 
     public void testServiceDetectionNoInterface() throws ConfigurationException {
@@ -130,4 +143,18 @@
 
     }
 
+    public void testWhenRequiresFilterIsPropagated() throws Exception {
+        Dictionary dictionary = new Properties();
+        Dictionary requiresfilter = new Properties();
+        requiresfilter.put("id1", "(filter1)");
+        dictionary.put("requires.filter", requiresfilter);
+
+
+        ProvidedService providedService = new ProvidedService(handler, new String[] {Runnable.class.getName()}, ProvidedService.SINGLETON_STRATEGY, null, new Properties());
+        Assert.assertEquals(2, providedService.getProperties().length); // instance.name, service.pid
+        providedService.addProperties(dictionary);
+
+        Assert.assertEquals(2 + 1, providedService.getProperties().length);
+    }
+
 }
diff --git a/ipojo/core/src/test/java/org/apache/felix/ipojo/test/MockBundle.java b/ipojo/core/src/test/java/org/apache/felix/ipojo/test/MockBundle.java
index 85bc1fc..ddca7e6 100644
--- a/ipojo/core/src/test/java/org/apache/felix/ipojo/test/MockBundle.java
+++ b/ipojo/core/src/test/java/org/apache/felix/ipojo/test/MockBundle.java
@@ -17,7 +17,7 @@
     private final ClassLoader m_classloader;
 
     /**
-     * @param classloader the Classloader to load classes and resources.
+     * @param cl the Classloader to load classes and resources.
      */
     public MockBundle(ClassLoader cl) {
         m_classloader = cl;
