 	 */
     public function get rotationY():Number
     {
-        return layoutFeatures.layoutRotationY;
-    }
-
+        return (layoutFeatures == null)? 0:layoutFeatures.layoutRotationY;
+    }
     /**
      *  @private
      */
     public function set rotationY(value:Number):void
     {
-        var oldValue:Number = layoutFeatures.layoutRotationY;
+        var oldValue:Number = rotationY;
         if (oldValue == value)
             return;
-
+        
+        allocateLayoutFeatures();
         layoutFeatures.layoutRotationY = value;
         dispatchPropertyChangeEvent("rotationY", oldValue, value);
         invalidateTransform();

    {
        if(value == layer)
            return;
         layoutFeatures.layer = value;  
        if(_host != null && _host is UIComponent)
            (_host as UIComponent).invalidateLayering();

        // we commit our transform in two places. First, during commit properties, because our size depends on it,
        // and our parent will most likely take it into account during layout. Secondly, here, because our parent will likely
        // change our xform as a result of layout, and we need to commit it before we end up on screen.   
        if (layoutFeatures == null || layoutFeatures.updatePending)
        {
            applyComputedTransform();
        }
