      * Factory method to create a command menu.
      *
      * @param items an array of menu items.
-     */
-    public static function createMenu (items :Array) :CommandMenu
+     * @param dispatcher an override event dispatcher to use for command events, rather than
+     * our parent.
+     */
+    public static function createMenu (
+        items :Array, dispatcher :IEventDispatcher = null) :CommandMenu
     {
         var menu :CommandMenu = new CommandMenu();
         menu.owner = DisplayObjectContainer(Application.application);
         menu.tabEnabled = false;
         menu.showRoot = true;
-        Menu.popUpMenu(menu, null, items);
+        menu.setDispatcher(dispatcher);
+        Menu.popUpMenu(menu, null, items); // does not actually pop up, but needed.
         return menu;
     }
 

    /**
     * Actually pop up the menu. This can be used instead of show().
     */
    public function popUp (trigger :DisplayObject, popUpwards :Boolean = false,
                           popLeftwards :Boolean = false) :void
    {
        _upping = popUpwards;
        _lefting = popLeftwards;

    /**
     * Shows the menu at the specified mouse coordinates.
     */
    public function popUpAt (
        mx :int, my :int, popUpwards :Boolean = false, popLeftwards :Boolean = false) :void
    {
        _upping = popUpwards;
        _lefting = popLeftwards;
