FLICKERING!!!! - to avoid it, call layoutContainer() - any way to do this automatically? - should layoutContainer invalidate instead of doing stuff right away? what do minimum, maxiumum, preferred layout size mean when displayobjects don't have preferred, min, max sizes? make tree of layouts on register or setConstraints, call invalidate: go up tree marking as invalid, invalidate stage, add render listener LayoutRenderer setConstraints(obj:DisplayObject, constraints:LayoutRendererConstraints) // for example, ease amount, etc. public function draw(layout):Layout // does the actual layout painting LayoutManager - should dispatch LAYED_OUT after every time it calls layoutContainer() final register(container:DisplayObjectContainer); // Automatically add all children, add ADDED listener to add children final unregister(container:DisplayObjectContainer); // Remove all children that were added final layoutContainer(container:DisplayObjectContainer); public function addLayoutDisplayObject(obj;DisplayObject):void public function removeLayoutDisplayObject(obj:DisplayObject):void final set renderer(renderer:LayoutRenderer):void GridBagLayout extends LayoutManager setConstraints(child:DisplayObject, constraints:GridBagConstraints); - use weak keyed dictionary columnWidths = [] rowHeights = [] getConstraints(child:DisplayObject):GridBagConstraints ? get layoutOrigin():Point override addLayoutDisplayObject override removeLayoutDisplayObject protected override calculateLayout(container:DisplayObjectContainer):Layout