diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
index bb60375..28788e0 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
@@ -33,6 +33,7 @@
 
 import org.apache.felix.cm.file.ConfigurationHandler;
 import org.apache.felix.fileinstall.ArtifactInstaller;
+import org.apache.felix.fileinstall.ArtifactListener;
 import org.apache.felix.fileinstall.internal.Util.Logger;
 import org.apache.felix.utils.collections.DictionaryAsMap;
 import org.apache.felix.utils.properties.InterpolationHelper;
@@ -65,7 +66,13 @@
         if (registration == null)
         {
             Properties props = new Properties();
-            registration = this.context.registerService(ConfigurationListener.class.getName(), this, props);
+            registration = this.context.registerService(
+                    new String[] {
+                        ConfigurationListener.class.getName(),
+                        ArtifactListener.class.getName(),
+                        ArtifactInstaller.class.getName()
+                    },
+                    this, props);
         }
     }
 
diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
index b024a11..8fb7121 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
@@ -41,7 +41,8 @@
     static ServiceTracker padmin;
     static ServiceTracker startLevel;
     static Runnable cmSupport;
-    static List /* <ArtifactListener> */ listeners = new ArrayList /* <ArtifactListener> */();
+    static final Map /* <ServiceReference, ArtifactListener> */ listeners = new TreeMap /* <ServiceReference, ArtifactListener> */();
+    static final BundleTransformer bundleTransformer = new BundleTransformer();
     BundleContext context;
     Map watchers = new HashMap();
     ServiceTracker listenersTracker;
@@ -51,7 +52,6 @@
     public void start(BundleContext context) throws Exception
     {
         this.context = context;
-        addListener(new BundleTransformer());
 
         Hashtable props = new Hashtable();
         props.put("url.handler.protocol", JarDirUrlHandler.PROTOCOL);
@@ -69,12 +69,18 @@
             public Object addingService(ServiceReference serviceReference)
             {
                 ArtifactListener listener = (ArtifactListener) super.addingService(serviceReference);
-                addListener(listener);
+                addListener(serviceReference, listener);
                 return listener;
             }
+            public void modifiedService(ServiceReference reference, Object service)
+            {
+                super.modifiedService(reference, service);
+                removeListener(reference);
+                addListener(reference, (ArtifactListener) service);
+            }
             public void removedService(ServiceReference serviceReference, Object o)
             {
-                removeListener((ArtifactListener) o);
+                removeListener(serviceReference);
             }
         };
         listenersTracker.open();
@@ -221,20 +227,20 @@
         watcher.start();
     }
 
-    private void addListener(ArtifactListener listener)
+    private void addListener(ServiceReference reference, ArtifactListener listener)
     {
         synchronized (listeners)
         {
-            listeners.add(listener);
+            listeners.put(reference, listener);
         }
         notifyWatchers();
     }
 
-    private void removeListener(ArtifactListener listener)
+    private void removeListener(ServiceReference reference)
     {
         synchronized (listeners)
         {
-            listeners.remove(listener);
+            listeners.remove(reference);
         }
         notifyWatchers();
     }
@@ -260,7 +266,9 @@
     {
         synchronized (listeners)
         {
-            return new ArrayList(listeners);
+            List l = new ArrayList(listeners.values());
+            l.add(bundleTransformer);
+            return l;
         }
     }
 
@@ -349,7 +357,6 @@
                 ConfigurationAdmin cm = (ConfigurationAdmin) super.addingService(serviceReference);
                 configInstaller = new ConfigInstaller(context, cm);
                 configInstaller.init();
-                fileInstall.addListener(configInstaller);
                 return cm;
             }
 
@@ -358,7 +365,6 @@
                 if (configInstaller != null)
                 {
                     configInstaller.destroy();
-                    fileInstall.removeListener(configInstaller);
                     configInstaller = null;
                 }
                 super.removedService(serviceReference, o);
