     public function set horizontalScrollPosition(value:Number):void 
     {
         if (_layout)
+        {
             _layout.horizontalScrollPosition = value;
+        }
+        else if (_layoutProperties)
+        {
+            _layoutProperties.horizontalScrollPosition = value;
+        }
         else
-            _layoutProperties.horizontalScrollPosition = value;
+        {
+            _layoutProperties = {horizontalScrollPosition: value};
+        }
     }
     
     //----------------------------------

    //----------------------------------
    //  layout
    //----------------------------------    
        
    private var _layout:LayoutBase;  // initialized in the ctor
    private var _layoutProperties:Object = null;
    private var layoutInvalidateSizeFlag:Boolean = false;
    private var layoutInvalidateDisplayListFlag:Boolean = false;


        if (value)
        {
            if (_layoutProperties)
            {
                if (_layoutProperties.clipAndEnableScrolling !== undefined)
                    value.clipAndEnableScrolling = _layoutProperties.clipAndEnableScrolling;
                
                if (_layoutProperties.verticalScrollPosition !== undefined)
                    value.verticalScrollPosition = _layoutProperties.verticalScrollPosition;
                
                if (_layoutProperties.horizontalScrollPosition !== undefined)
                    value.horizontalScrollPosition = _layoutProperties.horizontalScrollPosition;
                
                _layoutProperties = null;
            }
            
            if (_layout)
                value.clipAndEnableScrolling = _layout.clipAndEnableScrolling;
        }
        else
        {
            if (_layout)
            {
                // when the layout changes, we don't want to transfer over 
                // horizontalScrollPosition and verticalScrollPosition
                _layoutProperties = {clipAndEnableScrolling: _layout.clipAndEnableScrolling};
            }
        }

        if (_layout)
