      */
     public function addControl (label :UIComponent, control :UIComponent) :void
     {
-        var item :HBox = new HBox();
-        item.width = 225;
-        item.setStyle("horizontalGap", 5);
-        label.width = 95;
-        item.addChild(label);
-        control.width = 125;
-        item.addChild(control);
-        _tile.addChild(item);
+        if (_gridRow == null) {
+            _gridRow = new GridRow();
+            _grid.addChild(_gridRow);
+        }
+        _gridRow.addChild(wrapItem(label));
+        _gridRow.addChild(wrapItem(control));
+        if (_gridRow.numChildren == _columns * 2) {
+            _gridRow = null;
+        }
+    }
+
+    protected function wrapItem (component :UIComponent) :GridItem
+    {
+        var item :GridItem = new GridItem();
+        item.addChild(component);
+        return item;
     }
 
     /** The grid on which the config options are placed. */
-    protected var _tile :Tile = new Tile();
+    protected var _grid :Grid = new Grid();
+
+    /** The current row to which we're adding controls. */
+    protected var _gridRow :GridRow;
+
+    /** The number of columns in which to lay out our configuration. */
+    protected var _columns :int = 2;
 }
 }

public /*abstract*/ class FlexGameConfigurator extends GameConfigurator
{
    /**
     * Get the Container that contains the UI elements for this configurator.
     */
    public function getContainer () :Container
    {
        return _tile;
    }

    /**

import mx.core.Container;
import mx.core.UIComponent;

import mx.containers.Grid;
import mx.containers.GridItem;
import mx.containers.GridRow;
import mx.containers.HBox;

import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.util.ParlorContext;
