diff --git a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/Activator.java b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/Activator.java
index 5e74432..865b897 100644
--- a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/Activator.java
+++ b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/Activator.java
@@ -44,6 +44,7 @@
 import org.apache.felix.eventadmin.impl.util.LogWrapper;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.event.EventAdmin;
 import org.osgi.service.event.TopicPermission;
 
@@ -119,6 +120,9 @@
     // the wrapper).
     private volatile EventAdminImpl m_admin;
     
+    // The registration of the security decorator factory (i.e., the service)
+    private volatile ServiceRegistration m_registration;
+    
     /**
      * Called upon starting of the bundle. Constructs and registers the EventAdmin
      * service with the framework. Note that the properties of the service are 
@@ -226,7 +230,7 @@
         // register the admin wrapped in a service factory (SecureEventAdminFactory)
         // that hands-out the m_admin object wrapped in a decorator that checks 
         // appropriated permissions of each calling bundle
-        context.registerService(EventAdmin.class.getName(), 
+        m_registration = context.registerService(EventAdmin.class.getName(),
             new SecureEventAdminFactory(m_admin, publishPermissions), null);
         
         // Finally, adapt the outside events to our kind of events as per spec
@@ -249,6 +253,9 @@
      */
     public void stop(final BundleContext context)
     {
+        // We need to unregister manually
+        m_registration.unregister();
+        
         m_admin.stop();
         
         m_pool.close();
@@ -272,6 +279,8 @@
         
         m_syncQueue = null;
         
+        m_registration = null;
+        
         // Wait till the queues are empty (i.e., all pending events are delivered)
         // Warning: if this is one of the event delivery threads this will lead to 
         // a deadlock in case that time-outs are disabled. 
diff --git a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/handler/BlacklistingHandlerTasks.java b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/handler/BlacklistingHandlerTasks.java
index 38c6828..ff0b863 100644
--- a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/handler/BlacklistingHandlerTasks.java
+++ b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/handler/BlacklistingHandlerTasks.java
@@ -200,12 +200,17 @@
      * @param handlerRef The service reference to unget
      */
     public void ungetEventHandler(final EventHandler handler, 
-    		final ServiceReference handlerRef)
+            final ServiceReference handlerRef)
     {
-    		if(m_nullEventHandler != handler)
-    		{
-    			m_context.ungetService(handlerRef);
-    		}
+            if(m_nullEventHandler != handler)
+            {
+                // Is the handler not unregistered or blacklisted?
+                if(!m_blackList.contains(handlerRef) && (null != 
+                    handlerRef.getBundle()))
+                {
+                    m_context.ungetService(handlerRef);
+                }
+            }
     }
 
     /*
diff --git a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
index 90cf25c..b9a243a 100644
--- a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
+++ b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
@@ -89,4 +89,4 @@
     {
         m_handlerTasks.blackList(m_eventHandlerRef);
     }
-}
\ No newline at end of file
+}
diff --git a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
index 6985d8e..e4a5804 100644
--- a/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
+++ b/org.apache.felix.eventadmin/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java
@@ -295,8 +295,8 @@
                 // class as well.
                 for (Iterator iter = m_loggerRefs.iterator(); iter.hasNext();)
                 {
-                	   final ServiceReference next = (ServiceReference) iter.next();
-                	   
+                    final ServiceReference next = (ServiceReference) iter.next();
+                       
                     org.osgi.service.log.LogService logger = 
                         (org.osgi.service.log.LogService) m_context.getService(next);
     
@@ -344,8 +344,8 @@
                 // class as well.
                 for (Iterator iter = m_loggerRefs.iterator(); iter.hasNext();)
                 {
-                	   final ServiceReference next = (ServiceReference) iter.next();
-                	   
+                       final ServiceReference next = (ServiceReference) iter.next();
+                       
                     org.osgi.service.log.LogService logger = 
                         (org.osgi.service.log.LogService) m_context.getService(next);
     
