                         DisplayObjectContainer(currentCursor).mouseChildren = false;
                     cursorHolder.addChild(currentCursor);
                     
-                    if (!listenForContextMenu)
-                    {
-                    	app = systemManager.document as InteractiveObject;
-                    	if (app && app.contextMenu)
-                    	{
-                    		app.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler);
-                    		listenForContextMenu = true;
-                    	}
-                    	sm = systemManager as InteractiveObject;
-                    	if (sm && sm.contextMenu)
-                    {
-                    		sm.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler);
-                    		listenForContextMenu = true;
-                    	}     	
-                    }
+                    addContextMenuHandlers();
+
 					var pt:Point;
                     // make sure systemManager is not other implementation of ISystemManager
                     if (systemManager is SystemManager)

        }
        else
        {
            if (currentCursorID != CursorManager.NO_CURSOR)
            {
                // There is no cursor in the cursor list to display,

     */
    private function showCurrentCursor():void 
    {
        // if there are custom cursors...
        if (cursorList.length > 0)
        {
            if (!initialized)
