         if (rotation == value)
             return;
 
-        // trace("set scaleX:" + this + "value = " + value);
-        if(_xformOffsets == null)
+        if(_layoutFeatures == null)
 	        super.rotation = value;
 	   	else
 	   	{
-			invalidateTransform();
-	   		_xformOffsets.layoutRotationZ = value;
-	   		invalidateTransform();
+	   		_layoutFeatures.layoutRotationZ = value;
 	   	}
 
+   		invalidateTransform();
    		invalidateParentSizeAndDisplayList();
     }
 

     */
    override public function get scaleY():Number
    {
    	return ((_xformOffsets == null)? super.scaleY:_xformOffsets.layoutScaleY);
    }

    override public function set scaleY(value:Number):void
    {
    	var prevValue:Number = (_xformOffsets == null)? scaleY:_xformOffsets.layoutScaleY;
        if (prevValue == value)
            return;

        if(_xformOffsets == null)
	        super.scaleY = value;
	   	else
	   	{
	   		_xformOffsets.layoutScaleY = value;
	   		invalidateTransform();
	   	}

        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
        {
	        invalidateProperties();
        	invalidateSize();
        }
        else
        {
                // If we're not compatible with Flex3 (measuredWidth is pre-scale always)
                // and scaleX is changing we need to invalidate parent size and display list
                // since we are not going to detect a change in measured sizes during measure.
        	invalidateParentSizeAndDisplayList();
        }


	 */
    override public function get rotationY():Number
    {
    	return (_layoutFeatures == null)? super.rotationY:_layoutFeatures.layoutRotationY;
    }

    /**
