diff --git a/deviceaccess/src/main/java/org/apache/felix/das/Activator.java b/deviceaccess/src/main/java/org/apache/felix/das/Activator.java
index 1bd6698..c7f918a 100644
--- a/deviceaccess/src/main/java/org/apache/felix/das/Activator.java
+++ b/deviceaccess/src/main/java/org/apache/felix/das/Activator.java
@@ -41,10 +41,10 @@
 {
 
     /** the bundle context */
-    private BundleContext m_context;
+    private volatile BundleContext m_context;
 
     /** the dependency manager */
-    private DependencyManager m_manager;
+    private volatile DependencyManager m_manager;
 
     /** the device manager */
     private DeviceManager m_deviceManager;
@@ -96,7 +96,7 @@
             .setCallbacks( "locatorAdded", "locatorRemoved" ) );
         
         svc.add( createServiceDependency().setService( Driver.class, driverFilter ).setRequired( false )
-    		.setCallbacks( "driverAdded", "driverRemoved" ) );
+    		.setCallbacks( "driverAdded", "driverModified", "driverRemoved" ) );
         
         svc.add( createServiceDependency().setService( deviceFilter ).setRequired( false )
     		.setCallbacks( "deviceAdded", "deviceModified", "deviceRemoved" ) );
diff --git a/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java b/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java
index 928278a..ed7159a 100644
--- a/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java
+++ b/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java
@@ -211,15 +211,26 @@
         debug( "driver appeared: " + Util.showDriver( ref ) );
         
         //immediately check for idle devices
-//        submit( new CheckForIdleDevices() );
+        submit( new CheckForIdleDevices() );
     }
 
+    public void driverModified( ServiceReference ref, Object obj )
+    {
+        final Driver driver = Driver.class.cast( obj );
+        
+        debug( "driver modified: " + Util.showDriver( ref ) );
+        m_drivers.remove( ref );
+        m_drivers.put( ref , new DriverAttributes( ref, driver ) );
+
+        // check if devices have become idle
+        // after some time
+        schedule( new CheckForIdleDevices() );
+    }
 
     public void driverRemoved( ServiceReference ref )
     {
-        String driverId = String.class.cast( ref.getProperty( Constants.DRIVER_ID ) );
         debug( "driver lost: " + Util.showDriver( ref ) );
-        m_drivers.remove( driverId );
+        m_drivers.remove( ref );
 
         // check if devices have become idle
         // after some time
@@ -464,6 +475,11 @@
     private boolean isDriverBundle( Bundle bundle )
     {
         ServiceReference[] refs = bundle.getRegisteredServices();
+        
+        if (refs == null) {
+            return false;
+        }
+        
         for ( ServiceReference ref : refs )
         {
             if ( m_driverImplFilter.match( ref ) )
@@ -491,7 +507,14 @@
             {
                 // just call the tryUninstall; the da itself
                 // will know if it should really uninstall the driver.
-                da.tryUninstall();
+                try 
+                { 
+                	da.tryUninstall(); 
+                }
+                catch (Exception e) 
+                {
+                	debug(da.getDriverId() + " uninstall failed");
+                }
             }
 
             return null;
@@ -557,7 +580,7 @@
 
             // first find matching driver bundles
             // if there are no driver locators
-            // we'll have to do with the drivers that where
+            // we'll have to do with the drivers that were
             // added 'manually'
             Set<String> driverIds = m_driverLoader.findDrivers( m_locators, dict );
 
@@ -673,8 +696,7 @@
                 // its a referral
                 info( "attach led to a referral to: " + newDriverId );
                 m_excluded.add( m_finalDriver );
-                return driverAttachment( dict, new String[]
-                    { newDriverId } );
+                return driverAttachment( dict, new String[]{ newDriverId } );
             }
             catch ( Throwable t )
             {
diff --git a/deviceaccess/src/main/java/org/apache/felix/das/util/DriverMatcher.java b/deviceaccess/src/main/java/org/apache/felix/das/util/DriverMatcher.java
index 7bc8eea..f97c974 100644
--- a/deviceaccess/src/main/java/org/apache/felix/das/util/DriverMatcher.java
+++ b/deviceaccess/src/main/java/org/apache/felix/das/util/DriverMatcher.java
@@ -27,6 +27,7 @@
 
 import org.apache.felix.das.DriverAttributes;
 import org.apache.felix.das.Log;
+import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.device.Constants;
 import org.osgi.service.device.DriverSelector;
@@ -109,9 +110,20 @@
 
     public Match selectBestMatch( ServiceReference deviceRef, DriverSelector selector )
     {
-        Match[] matches = m_matches.toArray( new Match[0] );
+//        Match[] matches = m_matches.toArray( new Match[0] );
+        
+        //(re)check bundle status
+        List<Match> activeMatches = new ArrayList<Match>();
+        for (Match match : m_matches) {
+            if (match.getDriver().getBundle().getState() == Bundle.ACTIVE) {
+                activeMatches.add(match);
+            } else {
+                m_log.debug("skipping: " + match + ", it's bundle is: " + match.getDriver().getBundle().getState());
+            }
+        }
         try
         {
+          Match[] matches = activeMatches.toArray( new Match[0] );
             int index = selector.select( deviceRef, matches );
             if ( index != DriverSelector.SELECT_NONE && index >= 0 && index < matches.length )
             {
