diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
index 9bb7341..f8ea35b 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
@@ -108,7 +108,9 @@
     private final Object enabledLatchLock = new Object();
 
     protected volatile boolean m_internalEnabled;
-
+    
+    private volatile boolean disposed;
+    
     //service event tracking
     private int floor;
 
@@ -513,6 +515,7 @@
      */
     public void dispose( int reason )
     {
+        disposed = true;
         disposeInternal( reason );
     }
     
@@ -673,7 +676,20 @@
 
     final void enableInternal()
     {
-        m_state.enable( this );
+        if ( disposed )
+        {
+            throw new IllegalStateException( "enable: " + this );
+        }
+        if ( !isActivatorActive() )
+        {
+            log( LogService.LOG_DEBUG, "Bundle's component activator is not active; not enabling component",
+                    null );
+            return;
+        }
+
+        registerComponentId();
+        changeState( Unsatisfied.getInstance() );
+        log( LogService.LOG_DEBUG, "Component enabled", null );
         m_internalEnabled = true;
     }
 
@@ -1307,12 +1323,6 @@
             return m_state;
         }
 
-        void enable( AbstractComponentManager acm )
-        {
-            log( acm, "enable" );
-        }
-
-
         void activate( AbstractComponentManager acm )
         {
             log( acm, "activate" );
@@ -1404,20 +1414,6 @@
         }
 
 
-        void enable( AbstractComponentManager acm )
-        {
-            if ( !acm.isActivatorActive() )
-            {
-                acm.log( LogService.LOG_DEBUG, "Bundle's component activator is not active; not enabling component",
-                    null );
-                return;
-            }
-
-            acm.registerComponentId();
-            acm.changeState( Unsatisfied.getInstance() );
-            acm.log( LogService.LOG_DEBUG, "Component enabled", null );
-        }
-
         void deactivate( AbstractComponentManager acm, int reason, boolean disable )
         {
             doDeactivate( acm, reason, disable );
@@ -1738,9 +1734,5 @@
             //factory instance can have dispose called with no effect. 112.5.5
         }
 
-        void enable( AbstractComponentManager acm )
-        {
-            throw new IllegalStateException( "enable: " + this );
-        }
     }
 }
