             sm.stage.colorCorrection = value;
     }
     
+    /**
+     *  @private
+     *  Several properties are proxied to controlGroup.  However, when controlGroup
+     *  is not around, we need to store values set on SkinnableContainer.  This object 
+     *  stores those values.  If controlGroup is around, the values are stored 
+     *  on the controlGroup directly.  However, we need to know what values 
+     *  have been set by the developer on the SkinnableContainer (versus set on 
+     *  the controlGroup or defaults of the controlGroup) as those are values 
+     *  we want to carry around if the controlGroup changes (via a new skin). 
+     *  In order to store this info effeciently, controlGroupProperties becomes 
+     *  a uint to store a series of BitFlags.  These bits represent whether a 
+     *  property has been explicitely set on this SkinnableContainer.  When the 
+     *  controlGroup is not around, controlGroupProperties is a typeless 
+     *  object to store these proxied properties.  When controlGroup is around,
+     *  controlGroupProperties stores booleans as to whether these properties 
+     *  have been explicitely set or not.
+     */
+    private var controlGroupProperties:Object = {};
+
+    //----------------------------------
+    //  controlGroup
+    //---------------------------------- 
+    
+    [SkinPart(required="false")]
+
+    /**
+     *  The skin part that defines the appearance of the 
+     *  control bar in the container.
+     *
+     *  @see spark.skins.spark.PanelSkin
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var controlGroup:Group;
+
+    //----------------------------------
+    //  controls
+    //---------------------------------- 
+    
+    [ArrayElementType("mx.core.IVisualElement")]
+    
+    /**
+     *  The set of items that become the content of
+     *  the controlGroup
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function set controls(value:Array):void
+    {
+        if (controlGroup)
+        {
+            controlGroup.mxmlContent = value;
+            controlGroupProperties = BitFlagUtil.update(controlGroupProperties as uint, 
+                                                        CONTROLS_PROPERTY_FLAG, true);
+        }
+        else
+            controlGroupProperties.controls = value;
+    }
+
+    //----------------------------------
+    //  controlLayout
+    //---------------------------------- 
+    
+    /**
+     *  An optional Layout assigned to the control bar.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get controlLayout():LayoutBase
+    {
+        return (controlGroup) 
+            ? controlGroup.layout 
+            : controlGroupProperties.layout;
+    }
+
+    public function set controlLayout(value:LayoutBase):void
+    {
+        if (controlGroup)
+        {
+            controlGroup.layout = value;
+            controlGroupProperties = BitFlagUtil.update(controlGroupProperties as uint, 
+                                                        LAYOUT_PROPERTY_FLAG, true);
+        }
+        else
+            controlGroupProperties.layout = value;
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Compile-time pseudo-properties

        }
    }
    
    //----------------------------------
    //  unscaledHeight
    //----------------------------------


    //--------------------------------------------------------------------------
    //
    //  Class constants
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private
     */
    private static const CONTROLS_PROPERTY_FLAG:uint = 1 << 0;

    /**
     *  @private
     */
    private static const LAYOUT_PROPERTY_FLAG:uint = 1 << 1;

    //--------------------------------------------------------------------------
    //
    //  Class properties
    //
    //--------------------------------------------------------------------------
