                         _lastFocus = null;
                     }
                     // trace("FM removed " + o);
-                    o.removeEventListener("tabFocusEnabledChange", tabFocusEnabledChangeHandler);
-                    o.removeEventListener("tabIndexChange", tabIndexChangeHandler);
                     focusableObjects.splice(i, 1);
                     focusableCandidates = [];
                     calculateCandidates = true;                 
                     break;
                 }
             }
+            o.removeEventListener("tabFocusEnabledChange", tabFocusEnabledChangeHandler);
+            o.removeEventListener("tabIndexChange", tabIndexChangeHandler);
         }
         removeFocusables(o, false);
     }

	                calculateCandidates = true;
    	            // trace("FM added " + o);
    	        }
                o.addEventListener("tabFocusEnabledChange", tabFocusEnabledChangeHandler);
                o.addEventListener("tabIndexChange", tabIndexChangeHandler);
   			}

        }
        


    private function isValidFocusCandidate(o:DisplayObject, g:String):Boolean
    {
        if (o is IFocusManagerComponent)
            if (!IFocusManagerComponent(o).focusEnabled)
                return false;

        if (!isEnabledAndVisible(o))
            return false;

