http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
index 081a8be..c37ee77 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIButtonBase.as
@@ -28,9 +28,9 @@ package org.apache.flex.core
        import org.apache.flex.core.IUIBase;
        import org.apache.flex.core.ValuesManager;
        import org.apache.flex.events.Event;
-    import org.apache.flex.events.utils.MouseEventConverter;
        import org.apache.flex.events.EventDispatcher;
-    import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.events.utils.MouseEventConverter;
        
     //--------------------------------------
     //  Events
@@ -49,8 +49,9 @@ package org.apache.flex.core
        [Event(name="click", type="org.apache.flex.events.MouseEvent")]
 
     /**
-     *  The UIButtonBase class is the base class for most Buttons in a FlexJS
-     *  application.  In Flash, these buttons extend SimpleButton and therefore
+     *  The UIHTMLElementWrapper class is the base class for most Buttons
+     *  and other UI objects in a FlexJS application that do not have 
children.  
+     *  In Flash, these buttons extend SimpleButton and therefore
      *  do not support all of the Sprite APIs.
      *  
      *  @langversion 3.0
@@ -59,7 +60,7 @@ package org.apache.flex.core
      *  @productversion FlexJS 0.0
      */
        COMPILE::SWF
-       public class UIButtonBase extends EventDispatcher implements 
IStrandWithModel, IEventDispatcher, IUIBase, IStyleableObject, ILayoutChild
+       public class UIButtonBase extends UIHTMLElementWrapper implements 
IStrandWithModel, IEventDispatcher, IUIBase, IStyleableObject, ILayoutChild
        {
         /**
          *  Constructor.
@@ -69,69 +70,32 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public function UIButtonBase(upState:DisplayObject=null, 
overState:DisplayObject=null, downState:DisplayObject=null, 
hitTestState:DisplayObject=null)
+               public function UIButtonBase()
                {
-            _button = new WrappedSimpleButton(upState, overState, downState, 
hitTestState);
-            _button.flexjs_wrapper = this;
-
-
                        // mouseChildren = true;
                        // mouseEnabled = true;
             MouseEventConverter.setupInstanceConverters(this);
                }
 
-        private var _button:WrappedSimpleButton;
-
-        public function get $button():SimpleButton
+        protected function createElement():IFlexJSElement
         {
-            return _button;
-        }
-
-        public function get $displayObject():DisplayObject
-        {
-            return _button;
+            element = _button = new WrappedSimpleButton();
+            _button.flexjs_wrapper = this;
+            return element;
         }
+        private var _button:WrappedSimpleButton;
 
-        /**
-         *  @copy org.apache.flex.core.HTMLElementWrapper#element
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get element():IFlexJSElement
+        public function get $button():SimpleButton
         {
             return _button;
         }
 
-        private var _parent:IParent;
-        public function get parent():IParent
-        {
-            return _parent;
-        }
-        public function set parent(val:IParent):void
-        {
-            _parent = val;
-        }
-
-        public function get alpha():Number
-        {
-            return _button.alpha;
-        }
-
-        public function set alpha(value:Number):void
-        {
-            _button.alpha = value;
-        }
-
-
         private var _x:Number;
         
                /**
                 *  @private
                 */
-               public function set x(value:Number):void
+               override public function set x(value:Number):void
                {
                        if (_button.x != value) {
                                _button.x = _x = value;
@@ -142,17 +106,13 @@ package org.apache.flex.core
                                dispatchEvent(new Event("xChanged"));
                        }
                }
-        public function get x():Number
-        {
-            return _x;
-        }
                
         private var _y:Number;
-
+        
         /**
                 *  @private
                 */
-               public function set y(value:Number):void
+               override public function set y(value:Number):void
                {
                        if (_button.y != value) {
                                _button.y = _y = value;
@@ -164,11 +124,6 @@ package org.apache.flex.core
                        }
                }
 
-        public function get y():Number
-        {
-            return _y;
-        }
-               
                /**
                 *  Retrieve the low-level bounding box y.
                 *  
@@ -346,7 +301,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public function get width():Number
+               override public function get width():Number
                {
                        if (isNaN(explicitWidth))
                        {
@@ -361,7 +316,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-               public function set width(value:Number):void
+               override public function set width(value:Number):void
                {
                        if (explicitWidth != value)
                        {
@@ -397,7 +352,7 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public function get height():Number
+               override public function get height():Number
                {
                        if (isNaN(explicitHeight))
                        {
@@ -412,7 +367,7 @@ package org.apache.flex.core
         /**
          *  @private
          */
-               public function set height(value:Number):void
+               override public function set height(value:Number):void
                {
                        if (explicitHeight != value)
                        {
@@ -541,14 +496,14 @@ package org.apache.flex.core
                 * @private
                 */
         [Bindable("visibleChanged")]
-               public function set visible(value:Boolean):void
+               override public function set visible(value:Boolean):void
                {
                        _button.visible = value;
                        dispatchEvent(new Event(value?"show":"hide"));
                        dispatchEvent(new Event("visibleChanged"));
                }
 
-        public function get visible():Boolean
+        override public function get visible():Boolean
         {
             return _button.visible;
         }
@@ -566,38 +521,6 @@ package org.apache.flex.core
             return (isNaN(_explicitHeight) && isNaN(_percentHeight));
         }
         
-        private var _model:IBeadModel;
-
-        /**
-         *  @copy org.apache.flex.core.UIBase#model
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public function get model():Object
-        {
-            if (_model == null)
-            {
-                // addbead will set _model
-                addBead(new (ValuesManager.valuesImpl.getValue(this, 
"iBeadModel")) as IBead);
-            }
-            return _model;
-        }
-
-        /**
-         *  @private
-         */
-        public function set model(value:Object):void
-        {
-            if (_model != value)
-            {
-                addBead(value as IBead);
-                dispatchEvent(new Event("modelChanged"));
-            }
-        }
-               
         private var _view:IBeadView;
         
         /**
@@ -772,60 +695,15 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public function addBead(bead:IBead):void
+               override public function addBead(bead:IBead):void
                {
-                       if (!strand)
-                               strand = new Vector.<IBead>;
-                       strand.push(bead);
-                       if (bead is IBeadModel)
-                               _model = bead as IBeadModel;
-            else if (bead is IBeadView)
+            super.addBead(bead);
+            if (bead is IBeadView)
                 _view = bead as IBeadView;
                        bead.strand = this;
                }
                
         /**
-         *  @copy org.apache.flex.core.UIBase#getBeadByType()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-               public function getBeadByType(classOrInterface:Class):IBead
-               {
-                       for each (var bead:IBead in strand)
-                       {
-                               if (bead is classOrInterface)
-                                       return bead;
-                       }
-                       return null;
-               }
-               
-        /**
-         *  @copy org.apache.flex.core.UIBase#removeBead()
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-               public function removeBead(value:IBead):IBead   
-               {
-                       var n:int = strand.length;
-                       for (var i:int = 0; i < n; i++)
-                       {
-                               var bead:IBead = strand[i];
-                               if (bead == value)
-                               {
-                                       strand.splice(i, 1);
-                                       return bead;
-                               }
-                       }
-                       return null;
-               }
-               
-        /**
          *  @copy org.apache.flex.core.UIBase#addToParent()
          *  
          *  @langversion 3.0

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
new file mode 100644
index 0000000..5f82f4a
--- /dev/null
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIHTMLElementWrapper.as
@@ -0,0 +1,257 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.core
+{
+COMPILE::SWF
+{
+       import flash.display.DisplayObject;
+    import flash.display.DisplayObjectContainer;
+       import flash.display.SimpleButton;
+}
+
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IBeadModel;
+       import org.apache.flex.core.IMeasurementBead;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.core.IUIBase;
+       import org.apache.flex.core.ValuesManager;
+       import org.apache.flex.events.Event;
+    import org.apache.flex.events.utils.MouseEventConverter;
+       import org.apache.flex.events.EventDispatcher;
+    import org.apache.flex.events.IEventDispatcher;
+       
+    //--------------------------------------
+    //  Events
+    //--------------------------------------
+    
+    /**
+     *  Set a different class for click events so that
+     *  there aren't dependencies on the flash classes
+     *  on the JS side.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+       [Event(name="click", type="org.apache.flex.events.MouseEvent")]
+
+    /**
+     *  The UIHTMLElementWrapper class is the base class for most Buttons
+     *  and other UI objects in a FlexJS application that do not have 
children.  
+     *  In Flash, these buttons extend SimpleButton and therefore
+     *  do not support all of the Sprite APIs.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+       public class UIHTMLElementWrapper extends HTMLElementWrapper implements 
IStrandWithModel, IEventDispatcher
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+               public function UIHTMLElementWrapper()
+               {
+        }
+
+        COMPILE::JS
+        private var _positioner:WrappedHTMLElement;
+        
+        /**
+         * The HTMLElement used to position the component.
+         */
+        COMPILE::JS
+        public function get positioner():WrappedHTMLElement
+        {
+            return _positioner;
+        }
+        
+        /**
+         * @private
+         */
+        COMPILE::JS
+        public function set positioner(value:WrappedHTMLElement):void
+        {
+            _positioner = value;
+        }
+        
+        /**
+         * allow access from overrides
+         */
+        protected var _model:IBeadModel;
+        
+        /**
+         * @flexjsignorecoercion Class 
+         * @flexjsignorecoercion org.apache.flex.core.IBeadModel 
+         */
+        public function get model():Object
+        {
+            if (_model == null) 
+            {
+                // addbead will set _model
+                var m:Class = org.apache.flex.core.ValuesManager.valuesImpl.
+                    getValue(this, 'iBeadModel') as Class;
+                var b:IBeadModel = new m() as IBeadModel;
+                addBead(b);
+            }
+            return _model;
+        }
+        
+        [Bindable("modelChanged")]
+        public function set model(value:Object):void
+        {
+            if (_model != value)
+            {
+                addBead(value as IBead);
+                dispatchEvent(new 
org.apache.flex.events.Event("modelChanged"));
+            }
+        }
+        
+        /**
+         * @param bead The new bead.
+         */
+        override public function addBead(bead:IBead):void
+        {
+            if (!_beads)
+            {
+                _beads = new Vector.<IBead>();
+            }
+            
+            _beads.push(bead);
+            
+            if (bead is IBeadModel)
+            {
+                _model = bead as IBeadModel;
+            }
+            
+            bead.strand = this;
+        }
+        
+        COMPILE::SWF
+        public function get $displayObjectContainer():DisplayObjectContainer
+        {
+            return _element as DisplayObjectContainer;
+        }
+        
+        COMPILE::SWF
+        public function get $displayObject():DisplayObject
+        {
+            return _element as DisplayObject;
+        }
+                
+        COMPILE::SWF
+        public function get width():Number
+        {
+            return $displayObject.width;
+        }
+        
+        COMPILE::SWF
+        public function set width(value:Number):void
+        {
+            $displayObject.width = value;
+        }
+        
+        COMPILE::SWF
+        public function get height():Number
+        {
+            return $displayObject.height;
+        }
+        
+        COMPILE::SWF
+        public function set height(value:Number):void
+        {
+            $displayObject.height = value;
+        }
+        
+        COMPILE::SWF
+        public function get x():Number
+        {
+            return $displayObject.x;
+        }
+        
+        COMPILE::SWF
+        public function set x(value:Number):void
+        {
+            $displayObject.x = value;
+        }
+        
+        COMPILE::SWF
+        public function get y():Number
+        {
+            return $displayObject.y;
+        }
+        
+        COMPILE::SWF
+        public function set y(value:Number):void
+        {
+            $displayObject.y = value;
+        }        
+        
+        COMPILE::SWF
+        public function get visible():Boolean
+        {
+            return $displayObject.visible;
+        }
+        
+        COMPILE::SWF
+        public function set visible(value:Boolean):void
+        {
+            $displayObject.visible = value;
+        }        
+        
+        COMPILE::SWF
+        public function get alpha():Number
+        {
+            return $displayObject.alpha;
+        }
+        
+        COMPILE::SWF
+        public function set alpha(value:Number):void
+        {
+            $displayObject.alpha = value;
+        }        
+        
+        /**
+         * @param value The event containing new style properties.
+         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+         * @flexjsignorecoercion org.apache.flex.core.IParent
+         */
+        public function get parent():IParent
+        {
+            COMPILE::JS
+            {
+            var p:WrappedHTMLElement = this.positioner.parentNode as 
WrappedHTMLElement;
+            }
+            COMPILE::SWF
+            {
+                var p:IFlexJSElement = this.$displayObject.parent as 
IFlexJSElement;
+            }
+            var wrapper:IParent = p ? p.flexjs_wrapper as IParent : null;
+            return wrapper;
+        }
+        
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
index b5ff7ba..e906cdd 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedHTMLElement.as
@@ -19,7 +19,7 @@
 package org.apache.flex.core
 {
        COMPILE::JS
-       public class WrappedHTMLElement extends HTMLElement
+       public class WrappedHTMLElement extends HTMLElement implements 
IFlexJSElement
        {
 
                //--------------------------------------

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
new file mode 100644
index 0000000..195e8d9
--- /dev/null
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedMovieClip.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.core
+{
+       COMPILE::SWF
+       {
+           import flash.display.MovieClip;
+       }
+
+       COMPILE::SWF
+       public class WrappedMovieClip extends MovieClip implements 
IFlexJSElement
+       {
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
+        /**
+         *  A pointer back to the instance that wrapped this element.
+         * 
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
index 80e3378..eb90a21 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedShape.as
@@ -26,11 +26,12 @@ package org.apache.flex.core
        COMPILE::SWF
        public class WrappedShape extends Shape implements IFlexJSElement
        {
-
-               //--------------------------------------
-               //   Property
-               //--------------------------------------
-
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
         /**
          *  A pointer back to the instance that wrapped this element.
          * 
@@ -39,6 +40,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
index 56bb3d0..00249a0 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSimpleButton.as
@@ -33,10 +33,12 @@ package org.apache.flex.core
 
         }
 
-               //--------------------------------------
-               //   Property
-               //--------------------------------------
-
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
         /**
          *  A pointer back to the instance that wrapped this element.
          * 
@@ -45,6 +47,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
index f2919b3..e00e9f8 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedSprite.as
@@ -27,10 +27,12 @@ package org.apache.flex.core
        public class WrappedSprite extends Sprite implements IFlexJSElement
        {
 
-               //--------------------------------------
-               //   Property
-               //--------------------------------------
-
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
+        //--------------------------------------
+        //   Property
+        //--------------------------------------
+        
         /**
          *  A pointer back to the instance that wrapped this element.
          * 
@@ -39,6 +41,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
index c998ca5..bc36bad 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/WrappedTextField.as
@@ -27,6 +27,8 @@ package org.apache.flex.core
        public class WrappedTextField extends TextField implements 
IFlexJSElement
        {
 
+        private var _flexjs_wrapper:HTMLElementWrapper;
+        
                //--------------------------------------
                //   Property
                //--------------------------------------
@@ -39,6 +41,13 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               public var flexjs_wrapper:Object;
+        public function get flexjs_wrapper():HTMLElementWrapper
+        {
+            return _flexjs_wrapper;
+        }
+        public function set flexjs_wrapper(value:HTMLElementWrapper):void
+        {
+            _flexjs_wrapper = value;
+        }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
index 3655b5a..54b1f99 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
@@ -52,7 +52,7 @@ package org.apache.flex.utils
 
                        COMPILE::JS
                        {
-                               var r:Object = 
obj.element.getBoundingClientRect();
+                               var r:Object = (obj.element as 
HTMLElement).getBoundingClientRect();
                                var bounds:Rectangle = new Rectangle(r.x, r.y, 
r.width, r.height);
                                bounds.x -= window.pageXOffset;
                                bounds.y -= window.pageYOffset;
@@ -81,8 +81,8 @@ package org.apache.flex.utils
 
                        COMPILE::JS
                        {
-                               var r1:Object = 
obj1.element.getBoundingClientRect();
-                               var r2:Object = 
obj2.element.getBoundingClientRect();
+                               var r1:Object = (obj1.element as 
HTMLElement).getBoundingClientRect();
+                               var r2:Object = (obj2.element as 
HTMLElement).getBoundingClientRect();
                                var bounds1:Rectangle = new Rectangle(r1.x, 
r1.y, r1.width, r1.height);
                                var bounds2:Rectangle = new Rectangle(r2.x, 
r2.y, r2.width, r2.height);
 
@@ -115,7 +115,7 @@ package org.apache.flex.utils
 
                        COMPILE::JS
                        {
-                               var result:Array = 
examineElementsUnderPoint(x,y,obj.element);
+                               var result:Array = 
examineElementsUnderPoint(x,y,obj.element as HTMLElement);
                                return result.length > 0;
                        }
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
index 9af7640..058c5b8 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/MXMLDataInterpreter.as
@@ -168,6 +168,7 @@ public class MXMLDataInterpreter
     
     /**
      * @flexjsignorecoercion Function 
+     * @flexjsignorecoercion org.apache.flex.core.IChild 
      */
     private static function initializeStrandBasedObject(document:Object, 
parent:IParent, comp:Object, data:Array, i:int):int
     {
@@ -296,12 +297,12 @@ public class MXMLDataInterpreter
         COMPILE::SWF
         {
             if (parent && comp is IChild)
-                parent.addElement(comp, !(parent is IContainer));
+                parent.addElement(comp as IChild, !(parent is IContainer));
         }
         COMPILE::JS
         {
             if (parent && comp is IChild)
-                parent.addElement(comp, !(parent is IContainer));
+                parent.addElement(comp as IChild, !(parent is IContainer));
         }
         
         if (children)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
index 4e5cfed..5f4382d 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ViewSourceContextMenuOption.as
@@ -29,7 +29,7 @@ COMPILE::SWF
     import flash.ui.ContextMenuItem;
 }
 
-import org.apache.flex.core.HTMLElementWrapper;
+import org.apache.flex.core.UIHTMLElementWrapper;
 import org.apache.flex.core.IBead;
 import org.apache.flex.core.IStrand;
 
@@ -74,7 +74,7 @@ public class ViewSourceContextMenuOption implements IBead
                
         COMPILE::SWF
         {
-               var menuHost:InteractiveObject = 
InteractiveObject(HTMLElementWrapper(value).$sprite);
+               var menuHost:InteractiveObject = 
InteractiveObject(UIHTMLElementWrapper(value).$displayObject);
                var cm:ContextMenu = ContextMenu(menuHost.contextMenu);
                if (!cm)
                {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
 
b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
index db85a4a..333dae7 100644
--- 
a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
+++ 
b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/Application.as
@@ -20,8 +20,10 @@ package org.apache.flex.createjs
 {      
        import org.apache.flex.core.ApplicationBase;
        import org.apache.flex.core.IApplicationView;
-       import org.apache.flex.core.IParent;
+       import org.apache.flex.core.IChild;
+    import org.apache.flex.core.IParent;
        import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
        import org.apache.flex.core.IValuesImpl;
        import org.apache.flex.core.ValuesManager;
        import org.apache.flex.events.Event;
@@ -318,11 +320,12 @@ package org.apache.flex.createjs
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion createjs.DisplayObject
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
                 */
-               public function addElement(c:Object, dispatchEvent:Boolean = 
true):void
+               public function addElement(c:IChild, dispatchEvent:Boolean = 
true):void
                {
                        stage.addChild(c.element as DisplayObject);
-                       c.addedToParent();
+            (c as IUIBase).addedToParent();
                }
                
                /**
@@ -332,12 +335,12 @@ package org.apache.flex.createjs
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
-         *  @flexjsignorecoercion createjs.DisplayObject
+         *  @flexjsignorecoercion org.apache.flex.core.IUIBase
                 */
-               public function addElementAt(c:Object, index:int, 
dispatchEvent:Boolean = true):void
+               public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
                {
                        stage.addChildAt(c.element as DisplayObject, index);
-                       c.addedToParent();
+            (c as IUIBase).addedToParent();
                }
                
                /**
@@ -348,11 +351,12 @@ package org.apache.flex.createjs
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+         *  @flexjsignorecoercion org.apache.flex.core.IChild
                 */
-               public function getElementAt(index:int):Object
+               public function getElementAt(index:int):IChild
                {
                        var c:WrappedHTMLElement = stage.getChildAt(index) as 
WrappedHTMLElement;
-                       return c.flexjs_wrapper;
+                       return c.flexjs_wrapper as IChild;
                }
                
                /**
@@ -364,7 +368,7 @@ package org.apache.flex.createjs
                 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion createjs.DisplayObject
                 */
-               public function getElementIndex(c:Object):int
+               public function getElementIndex(c:IChild):int
                {
                        return stage.getChildIndex(c.element as DisplayObject)
                }
@@ -377,7 +381,7 @@ package org.apache.flex.createjs
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               public function removeElement(c:Object, dispatchEvent:Boolean = 
true):void
+               public function removeElement(c:IChild, dispatchEvent:Boolean = 
true):void
                {
                        stage.removeChild(c.element as DisplayObject);
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
 
b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
index 10c85c8..d29fa51 100644
--- 
a/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
+++ 
b/frameworks/projects/CreateJS/src/main/flex/org/apache/flex/createjs/core/UIBase.as
@@ -18,10 +18,12 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.createjs.core
 {
-    import org.apache.flex.core.HTMLElementWrapper;
+    import org.apache.flex.core.UIHTMLElementWrapper;
+    import org.apache.flex.core.IChild;
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.IStrandWithModel;
-       import org.apache.flex.core.IParentIUIBase;
+       import org.apache.flex.core.IParent;
+    import org.apache.flex.core.IParentIUIBase;
        import org.apache.flex.core.IStyleableObject;
        import org.apache.flex.core.ILayoutChild;
        import org.apache.flex.core.IBeadModel;
@@ -62,7 +64,7 @@ package org.apache.flex.createjs.core
        }
         
        COMPILE::JS
-       public class UIBase extends HTMLElementWrapper implements 
IStrandWithModel, IEventDispatcher, IUIBase, IFlexJSElement
+       public class UIBase extends UIHTMLElementWrapper implements 
IStrandWithModel, IEventDispatcher, IUIBase, IFlexJSElement
        {
                /**
                 *  Constructor.
@@ -336,7 +338,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function addElement(c:Object, dispatchEvent:Boolean = true):void
+        public function addElement(c:IChild, dispatchEvent:Boolean = true):void
         {
             (element as Container).addChild(c.element as DisplayObject);
         }
@@ -345,7 +347,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function addElementAt(c:Object, index:int, 
dispatchEvent:Boolean = true):void
+        public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
         {
             (element as Container).addChildAt(c.element as DisplayObject, 
index);
         }
@@ -355,7 +357,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function getElementIndex(c:Object):int
+        public function getElementIndex(c:IChild):int
         {
             return (element as Container).getChildIndex(c.element as 
DisplayObject);
         }
@@ -365,7 +367,7 @@ package org.apache.flex.createjs.core
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          */
-        public function removeElement(c:Object, dispatchEvent:Boolean = 
true):void
+        public function removeElement(c:IChild, dispatchEvent:Boolean = 
true):void
         {
             (element as Container).removeChild(c.element as DisplayObject);
         }
@@ -374,10 +376,11 @@ package org.apache.flex.createjs.core
         /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
+         * @flexjsignorecoercion org.apache.flex.core.IChild
          */
-        public function getElementAt(index:int):Object
+        public function getElementAt(index:int):IChild
         {
-            return (element as Container).getChildAt(index);
+            return (element as Container).getChildAt(index) as IChild;
         }
         
 
@@ -670,34 +673,16 @@ package org.apache.flex.createjs.core
             (positioner as DisplayObject).alpha = value;
         }
 
-        private var _positioner:WrappedHTMLElement;
-        
-        /**
-         * The HTMLElement used to position the component.
-         */
-        public function get positioner():WrappedHTMLElement
-        {
-            return _positioner;
-        }
-        
-        /**
-         * @private
-         */
-        public function set positioner(value:WrappedHTMLElement):void
-        {
-            _positioner = value;
-        }
-               
                /**
          * @flexjsignorecoercion createjs.Container
          * @flexjsignorecoercion createjs.DisplayObject
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
                 */
-               public function get parent():IUIBase
+               override public function get parent():IParent
                {
                        var pos:createjs.DisplayObject = this.positioner as 
createjs.DisplayObject;
                        var p:WrappedHTMLElement = pos['parent'] as 
WrappedHTMLElement;
-                       var wrapper:IUIBase = p ? p.flexjs_wrapper as IUIBase : 
null;
+                       var wrapper:IParent = p ? p.flexjs_wrapper as IParent : 
null;
                        return wrapper;
                }
                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
index 12f42e3..a226858 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/events/DragEvent.as
@@ -337,6 +337,7 @@ package org.apache.flex.events
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion org.apache.flex.core.IUIBase
+         *  @flexjsignorecoercion org.apache.flex.events.IEventDispatcher
          *  @flexjsignorecoercion window.Event
          */
         public static function dispatchDragEvent(event:DragEvent, 
target:IEventDispatcher):void
@@ -347,7 +348,7 @@ package org.apache.flex.events
             }
             COMPILE::JS
             {
-                (target as IUIBase).element.dispatchEvent(event as 
window.Event);
+                ((target as IUIBase).element as 
IEventDispatcher).dispatchEvent(event as window.Event);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
 
b/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
index 76a879f..cc58ef6 100644
--- 
a/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
+++ 
b/frameworks/projects/Effects/src/main/flex/org/apache/flex/core/StatesWithTransitionsImpl.as
@@ -19,6 +19,7 @@
 package org.apache.flex.core
 {
         
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IParent;
     import org.apache.flex.core.IStatesObject;
     import org.apache.flex.effects.Effect;
@@ -191,7 +192,7 @@ package org.apache.flex.core
             }
         }
         
-        private function isItemInState(child:Object, s:State):Boolean
+        private function isItemInState(child:IChild, s:State):Boolean
         {
             if (s == null) return false;
             
@@ -286,7 +287,7 @@ package org.apache.flex.core
                         }
                     }
                     var childrenAdded:Boolean = false;
-                    for each (var item:Object in ai.items)
+                    for each (var item:IChild in ai.items)
                     {
                         if (!isItemInState(item, oldState))
                         {
@@ -295,9 +296,9 @@ package org.apache.flex.core
                                 parent = parent[ai.destination] as IParent;
                             if (ai.relativeTo != null)
                             {
-                                var child:Object = ai.document[ai.relativeTo];
+                                var child:IChild = ai.document[ai.relativeTo] 
as IChild;
                                 if (ai.destination)
-                                    parent = IChild(child).parent as IParent;
+                                    parent = child.parent as IParent;
                                 var index:int = parent.getElementIndex(child);
                                 if (ai.position == "after")
                                     index++;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
 
b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
index 8eff640..ecb1c1e 100644
--- 
a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
+++ 
b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSContentAndTextToggleButtonView.as
@@ -132,8 +132,8 @@ package org.apache.flex.flat.beads
                 var icon:StyleableCSSTextField = new StyleableCSSTextField();
                 icon.name = "icon";
                 icon.className = className + suffixMap[p];
-                s.addChild(icon.$textField);
-                s.addChild(tf.$textField);
+                s.addChild(icon);
+                s.addChild(tf);
             }
             
                        _toggleButtonModel = 
value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
@@ -225,7 +225,7 @@ package org.apache.flex.flat.beads
                        var parent:CSSTextField;
                        for each(parent in textFields)
                        {
-                               if(parent.$textField == tf)
+                               if(parent == tf)
                                        return parent;
                        }
                        return null;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
 
b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
index edd4136..09669c4 100644
--- 
a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
+++ 
b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/CSSScrollBarButtonView.as
@@ -66,9 +66,9 @@ package org.apache.flex.flat.beads
             downArrowShape = new CSSShape();
             overArrowShape = new CSSShape();
             overArrowShape.state = "hover";
-            upSprite.addChild(upArrowShape.$shape);
-            downSprite.addChild(downArrowShape.$shape);
-            overSprite.addChild(overArrowShape.$shape);
+            upSprite.addChild(upArrowShape);
+            downSprite.addChild(downArrowShape);
+            overSprite.addChild(overArrowShape);
                }
                
                private var textModel:ITextModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
 
b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
index 0b98907..e37a3b3 100644
--- 
a/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
+++ 
b/frameworks/projects/Flat/src/main/flex/org/apache/flex/flat/beads/DropDownListView.as
@@ -30,18 +30,20 @@ package org.apache.flex.flat.beads
        import org.apache.flex.core.CSSSprite;
        import org.apache.flex.core.CSSTextField;
        import org.apache.flex.core.IBeadView;
+       import org.apache.flex.core.IChild;
        import org.apache.flex.core.ILayoutChild;
        import org.apache.flex.core.IPopUpHost;
        import org.apache.flex.core.ISelectionModel;
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.IUIBase;
+       import org.apache.flex.core.UIBase;
        import org.apache.flex.core.ValuesManager;
-    import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.html.Button;
        import org.apache.flex.html.beads.IDropDownListView;
-    import org.apache.flex.html.Button;
        import org.apache.flex.utils.CSSUtils;
+    import org.apache.flex.utils.UIUtils;
     
     /**
      *  The DropDownListView class is the default view for
@@ -77,9 +79,9 @@ package org.apache.flex.flat.beads
                        upTextField = new CSSTextField();
                        downTextField = new CSSTextField();
                        overTextField = new CSSTextField();
-            upSprite.$sprite.addChild(upTextField.$textField);
-            overSprite.$sprite.addChild(overTextField.$textField);
-            downSprite.$sprite.addChild(downTextField.$textField);
+            upSprite.addChild(upTextField);
+            overSprite.addChild(overTextField);
+            downSprite.addChild(downTextField);
                        upTextField.selectable = false;
             upTextField.parentDrawsBackground = true;
             upTextField.parentHandlesPadding = true;
@@ -103,9 +105,9 @@ package org.apache.flex.flat.beads
             overArrows.className = 'dropdown-caret';
             downArrows = new CSSShape();
             downArrows.className = 'dropdown-caret';
-            upSprite.$sprite.addChild(upArrows.$shape);
-                       overSprite.$sprite.addChild(overArrows.$shape);
-                       downSprite.$sprite.addChild(downArrows.$shape);
+            upSprite.addChild(upArrows);
+                       overSprite.addChild(overArrows);
+                       downSprite.addChild(downArrows);
 
                }
 
@@ -134,9 +136,9 @@ package org.apache.flex.flat.beads
                        shape.graphics.beginFill(0xCCCCCC);
                        shape.graphics.drawRect(0, 0, 10, 10);
                        shape.graphics.endFill();
-                       b.$button.upState = upSprite.$sprite;
-                       b.$button.downState = downSprite.$sprite;
-                       b.$button.overState = overSprite.$sprite;
+                       b.$button.upState = upSprite;
+                       b.$button.downState = downSprite;
+                       b.$button.overState = overSprite;
                        b.$button.hitTestState = shape;
                        if (selectionModel.selectedIndex !== -1)
                                selectionChangeHandler(null);
@@ -289,21 +291,19 @@ package org.apache.flex.flat.beads
          */
         public function set popUpVisible(value:Boolean):void
         {
+            var host:IPopUpHost;
             if (value != _popUpVisible)
             {
                 _popUpVisible = value;
                 if (value)
                 {
-                                       var root:Object = 
UIBase(_strand).$sprite.root;
-                                       var host:DisplayObjectContainer = 
UIBase(_strand).$sprite.parent;
-                    while (host && !(host is IPopUpHost))
-                        host = host.parent;
-                    if (host)
-                        IPopUpHost(host).addElement(popUp);
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).addElement(popUp as IChild);
                 }
                 else
                 {
-                    DisplayObject(_popUp).parent.removeChild(_popUp as 
DisplayObject);                    
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).removeElement(popUp as IChild);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
 
b/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
index d176e7b..926253c 100644
--- 
a/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
+++ 
b/frameworks/projects/Formatters/src/main/flex/org/apache/flex/html/beads/FormatableTextInputView.as
@@ -85,7 +85,7 @@ package org.apache.flex.html.beads
                        
                        // move the cursor to the end
                        var l:int = this.textField.text.length;
-                       this.textField.$textField.setSelection(l,l);
+                       this.textField.setSelection(l,l);
                }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
index 43bae5c..351f871 100644
--- 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
+++ 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as
@@ -513,7 +513,7 @@ package org.apache.flex.svg
             COMPILE::SWF
             {
                 var textField:CSSTextField = new CSSTextField();
-                $sprite.addChild(textField.$textField);
+                $sprite.addChild(textField);
 
                 textField.selectable = false;
                 textField.type = TextFieldType.DYNAMIC;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
index 48c51d1..8c3637f 100644
--- 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
+++ 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicContainer.as
@@ -14,6 +14,7 @@
 package org.apache.flex.svg
 {
     import org.apache.flex.core.ContainerBase;
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IFlexJSElement;
     import org.apache.flex.core.ITransformHost;
 
@@ -85,7 +86,7 @@ package org.apache.flex.svg
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               override public function getElementAt(index:int):Object
+               override public function getElementAt(index:int):IChild
                {
                        return graphicGroup.getElementAt(index);
                }        
@@ -98,7 +99,7 @@ package org.apache.flex.svg
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               override public function addElement(c:Object, 
dispatchEvent:Boolean = true):void
+               override public function addElement(c:IChild, 
dispatchEvent:Boolean = true):void
                {
                        graphicGroup.addElement(c, dispatchEvent);
                        if (dispatchEvent)
@@ -113,7 +114,7 @@ package org.apache.flex.svg
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               override public function addElementAt(c:Object, index:int, 
dispatchEvent:Boolean = true):void
+               override public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
                {
                        graphicGroup.addElementAt(c, index, dispatchEvent);
                        if (dispatchEvent)
@@ -128,7 +129,7 @@ package org.apache.flex.svg
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               override public function removeElement(c:Object, 
dispatchEvent:Boolean = true):void
+               override public function removeElement(c:IChild, 
dispatchEvent:Boolean = true):void
                {
                        graphicGroup.removeElement(c, dispatchEvent);
                        if (dispatchEvent)
@@ -156,7 +157,7 @@ package org.apache.flex.svg
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               override public function getElementIndex(c:Object):int
+               override public function getElementIndex(c:IChild):int
                {
                        return graphicGroup.getElementIndex(c);
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
index 78b8820..4d113a4 100644
--- 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
+++ 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as
@@ -17,14 +17,17 @@ package org.apache.flex.svg
        COMPILE::SWF
     {
                import flash.display.Graphics;
+        import flash.display.Sprite;
         import flash.geom.Point;
         import flash.geom.Rectangle;
+        import org.apache.flex.core.WrappedSprite;
     }
     COMPILE::JS
     {
         import org.apache.flex.core.WrappedHTMLElement;
     }
 
+    import org.apache.flex.core.IFlexJSElement;
        import org.apache.flex.core.UIBase;
        import org.apache.flex.graphics.IFill;
        import org.apache.flex.graphics.IStroke;
@@ -32,6 +35,14 @@ package org.apache.flex.svg
 
        public class GraphicShape extends UIBase implements IGraphicShape
        {
+        
+        COMPILE::SWF
+        override protected function createElement():IFlexJSElement
+        {
+            element = new WrappedSprite();
+            return element;
+        }
+        
                private var _fill:IFill;
                private var _stroke:IStroke;
 
@@ -84,7 +95,7 @@ package org.apache.flex.svg
                 * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
                 */
                COMPILE::JS
-               override protected function createElement():WrappedHTMLElement
+               override protected function createElement():IFlexJSElement
                {
                        element = 
document.createElementNS('http://www.w3.org/2000/svg', 'svg') as 
WrappedHTMLElement;
                        element.flexjs_wrapper = this;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
index ab681ff..2aa6d46 100644
--- 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
+++ 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/LinearGradient.as
@@ -74,12 +74,14 @@ package org.apache.flex.svg
          * @param value The IGraphicShape object on which the fill must be 
added.
          * @return {string}
          * @flexjsignorecoercion Node
+         * @flexjsignorecoercion HTMLElement
          */
         COMPILE::JS
         public function addFillAttrib(value:IGraphicShape):String 
         {
             //Create and add a linear gradient def
-            var svgNS:String = value.element.namespaceURI;
+            var valueElement:HTMLElement = value.element as HTMLElement;
+            var svgNS:String = valueElement.namespaceURI;
             var grad:HTMLElement = document.createElementNS(svgNS, 
'linearGradient') as HTMLElement;
             var gradientId:String = this.newId;
             grad.setAttribute('id', gradientId);
@@ -115,8 +117,8 @@ package org.apache.flex.svg
             
             //Add defs element if not available already
             //Add newly created gradient to defs element
-            var defs:Node = value.element.querySelector('defs') ||
-                value.element.insertBefore(document.createElementNS(svgNS, 
'defs'), value.element.firstChild);
+            var defs:Node = valueElement.querySelector('defs') ||
+                valueElement.insertBefore(document.createElementNS(svgNS, 
'defs'), valueElement.firstChild);
             defs.appendChild(grad);
             
             //Return the fill attribute

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
index 31d4477..51b8135 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as
@@ -59,7 +59,7 @@ package org.apache.flex.svg
             COMPILE::SWF
             {
                 _textField = new CSSTextField();
-                $sprite.addChild(_textField.$textField);
+                $sprite.addChild(_textField);
             }
                }
                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
index 9aa2254..39eaeef 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/RadioButton.as
@@ -67,9 +67,9 @@ package org.apache.flex.html
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               public function RadioButton(upState:DisplayObject=null, 
overState:DisplayObject=null, downState:DisplayObject=null, 
hitTestState:DisplayObject=null)
+               public function RadioButton()
                {
-                       super(upState, overState, downState, hitTestState);
+                       super();
 
                        
addEventListener(org.apache.flex.events.MouseEvent.CLICK, internalMouseHandler);
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
index ade2671..0da2bb8 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/NumericOnlyTextInputBead.as
@@ -142,7 +142,7 @@ package org.apache.flex.html.accessories
                                textField.maxChars = maxChars;
                                // listen for changes to this textField and 
prevent non-numeric values, such
                                // as 34.09.94
-                               
textField.$textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput);
+                               
textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput);
                        }
                        else {
                                throw new Error("NumericOnlyTextInputBead 
requires strand to have an ITextFieldView bead");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
index 28d70e5..65a5a24 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/accessories/TextPromptBead.as
@@ -135,11 +135,11 @@ package org.apache.flex.html.accessories
                        var model:Object = UIBase(_strand).model;
                        
                        if (model.text != null && model.text.length > 0 ) {
-                               if (promptAdded) 
UIBase(_strand).$sprite.removeChild(promptField.$textField);
+                               if (promptAdded) 
UIBase(_strand).$displayObjectContainer.removeChild(promptField);
                                promptAdded = false;
                        }
                        else {
-                               if (!promptAdded) 
UIBase(_strand).$sprite.addChild(promptField.$textField);
+                               if (!promptAdded) 
UIBase(_strand).$displayObjectContainer.addChild(promptField);
                                promptField.text = prompt;
                                promptAdded = true;
                        }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
index a4f73e2..e25628a 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/BackgroundImageBead.as
@@ -89,12 +89,12 @@ package org.apache.flex.html.beads
                                
loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function 
(e:flash.events.Event):void { 
                                        var host:UIBase = UIBase(_strand);
                                        if (bitmap) {
-                                               
host.$sprite.removeChild(bitmap);
+                                               
host.$displayObjectContainer.removeChild(bitmap);
                                        }
                                        
                                        bitmap = 
Bitmap(LoaderInfo(e.target).content);
                                        
-                                       host.$sprite.addChildAt(bitmap,0);
+                                       
host.$displayObjectContainer.addChildAt(bitmap,0);
                                        
                                        if (isNaN(host.explicitWidth) && 
isNaN(host.percentWidth))
                                                
host.setWidth(loader.content.width);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
index f4d46a9..1c5bf89 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSImageAndTextButtonView.as
@@ -82,9 +82,9 @@ package org.apache.flex.html.beads
                        upTextField.autoSize = "left";
                        downTextField.autoSize = "left";
                        overTextField.autoSize = "left";
-                       upSprite.addChild(upTextField.$textField);
-                       downSprite.addChild(downTextField.$textField);
-                       overSprite.addChild(overTextField.$textField);
+                       upSprite.addChild(upTextField);
+                       downSprite.addChild(downTextField);
+                       overSprite.addChild(overTextField);
                }
                
                private var textModel:ImageAndTextModel;
@@ -148,10 +148,10 @@ package org.apache.flex.html.beads
                        var sw:uint = IUIBase(_strand).width;
                        var sh:uint = IUIBase(_strand).height;
                        
-                       textField.$textField.defaultTextFormat.leftMargin = 0;
-                       textField.$textField.defaultTextFormat.rightMargin = 0;
+                       textField.defaultTextFormat.leftMargin = 0;
+                       textField.defaultTextFormat.rightMargin = 0;
             // set it again so it gets noticed
-                       textField.$textField.defaultTextFormat = 
textField.$textField.defaultTextFormat;
+                       textField.defaultTextFormat = 
textField.defaultTextFormat;
             
                        var borderColor:uint;
                        var borderThickness:uint;
@@ -243,7 +243,7 @@ package org.apache.flex.html.beads
             {
                 var loader:Loader = new Loader();
                 sprite.addChildAt(loader, 0);
-                sprite.addChild(textField.$textField);
+                sprite.addChild(textField);
                 var url:String = backgroundImage as String;
                 loader.load(new URLRequest(url));
                 
loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function 
(e:flash.events.Event):void { 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
index 75d3023..0118a93 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as
@@ -81,9 +81,9 @@ package org.apache.flex.html.beads
                        upTextField.autoSize = "left";
                        downTextField.autoSize = "left";
                        overTextField.autoSize = "left";
-                       upSprite.addChild(upTextField.$textField);
-                       downSprite.addChild(downTextField.$textField);
-                       overSprite.addChild(overTextField.$textField);
+                       upSprite.addChild(upTextField);
+                       downSprite.addChild(downTextField);
+                       overSprite.addChild(overTextField);
                }
                
                private function get host():IUIBase
@@ -150,10 +150,10 @@ package org.apache.flex.html.beads
                        var sw:uint = IUIBase(_strand).width;
                        var sh:uint = IUIBase(_strand).height;
                        
-                       textField.$textField.defaultTextFormat.leftMargin = 0;
-                       textField.$textField.defaultTextFormat.rightMargin = 0;
+                       textField.defaultTextFormat.leftMargin = 0;
+                       textField.defaultTextFormat.rightMargin = 0;
             // set it again so it gets noticed
-                       textField.$textField.defaultTextFormat = 
textField.$textField.defaultTextFormat;
+                       textField.defaultTextFormat = 
textField.defaultTextFormat;
             
                        var borderColor:uint;
                        var borderThickness:uint;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
index c418b8a..a04f2bf 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CheckBoxView.as
@@ -76,7 +76,7 @@ package org.apache.flex.html.beads
                                var icon:Shape = new Shape();
                                icon.name = "icon";
                                s.addChild(icon);
-                               s.addChild(tf.$textField);
+                               s.addChild(tf);
                        }
                }
                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
index 26cf103..b4cdac3 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ComboBoxView.as
@@ -29,11 +29,15 @@ package org.apache.flex.html.beads
        import org.apache.flex.core.IPopUpHost;
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.ValuesManager;
+    import org.apache.flex.core.IChild;
     import org.apache.flex.core.IParent;
+    import org.apache.flex.core.IUIBase;
+    import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        import org.apache.flex.html.Button;
        import org.apache.flex.html.TextInput;
+    import org.apache.flex.utils.UIUtils;
        
        /**
         *  The ComboBoxView class creates the visual elements of the 
org.apache.flex.html.ComboBox 
@@ -136,7 +140,7 @@ package org.apache.flex.html.beads
             button.$button.upState = upSprite;
             button.$button.overState = overSprite;
             button.$button.downState = downSprite;
-                       
HTMLElementWrapper(strand).$sprite.addChild(button.$button);
+                       
UIBase(strand).$displayObjectContainer.addChild(button.$button);
                        button.width = 18;
                        button.height = 18;
                        button.x = textInput.width;
@@ -172,61 +176,64 @@ package org.apache.flex.html.beads
                        sprite.graphics.lineTo(4,4);
                        sprite.graphics.endFill();
                }
+        
+        private var _popUp:IStrand;
                
-               private var _popUp:IStrand;
-               
-               /**
-                *  The pop-up component that holds the selection list.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function get popUp():IStrand
-               {
-                       return _popUp;
-               }
-               
-               private var _popUpVisible:Boolean;
-               
-               /**
-                *  This property is true if the pop-up selection list is 
currently visible.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function get popUpVisible():Boolean
-               {
-                       return _popUpVisible;
-               }
-               public function set popUpVisible(value:Boolean):void
-               {
-                       if (value != _popUpVisible)
-                       {
-                               _popUpVisible = value;
-                               if (value)
-                               {
-                                       if (!_popUp)
-                                       {
-                                               var popUpClass:Class = 
ValuesManager.valuesImpl.getValue(_strand, "iPopUp") as Class;
-                                               _popUp = new popUpClass() as 
IStrand;
-                                       }
-                                       var root:Object = 
DisplayObject(_strand).root;
-                                       var host:DisplayObjectContainer = 
DisplayObject(_strand).parent;
-                                       while (host && !(host is IPopUpHost))
-                                               host = host.parent;
-                    if (host)
-                                       IPopUpHost(host).addElement(popUp);
-                               }
-                               else
-                               {
-                                       
DisplayObject(_popUp).parent.removeChild(_popUp as DisplayObject);              
      
-                               }
-                       }
-               }
+        /**
+         *  The dropdown/popup that displays the set of choices.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get popUp():IStrand
+        {
+            if (!_popUp)
+            {
+                var popUpClass:Class = 
ValuesManager.valuesImpl.getValue(_strand, "iPopUp") as Class;
+                _popUp = new popUpClass() as IStrand;
+            }
+            return _popUp;
+        }
+        
+        private var _popUpVisible:Boolean;
+        
+        /**
+         *  A flag that indicates whether the dropdown/popup is
+         *  visible.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get popUpVisible():Boolean
+        {
+            return _popUpVisible;
+        }
+        
+        /**
+         *  @private
+         */
+        public function set popUpVisible(value:Boolean):void
+        {
+            var host:IPopUpHost;
+            if (value != _popUpVisible)
+            {
+                _popUpVisible = value;
+                if (value)
+                {
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).addElement(popUp as IChild);
+                }
+                else
+                {
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).removeElement(popUp as IChild);
+                }
+            }
+        }
                
                /**
                 * @private

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
index 0c6696a..d62e799 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as
@@ -23,6 +23,7 @@ package org.apache.flex.html.beads
        import org.apache.flex.core.IBead;
        import org.apache.flex.core.IBeadLayout;
        import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
        import org.apache.flex.core.IContainer;
        import org.apache.flex.core.IContainerView;
        import org.apache.flex.core.IContentViewHost;
@@ -143,7 +144,7 @@ package org.apache.flex.html.beads
                /**
                 * @private
                 */
-               public function addElement(c:Object, dispatchEvent:Boolean = 
true):void
+               public function addElement(c:IChild, dispatchEvent:Boolean = 
true):void
                {
                        contentView.addElement(c, dispatchEvent);
                }
@@ -151,7 +152,7 @@ package org.apache.flex.html.beads
                /**
                 * @private
                 */
-               public function addElementAt(c:Object, index:int, 
dispatchEvent:Boolean = true):void
+               public function addElementAt(c:IChild, index:int, 
dispatchEvent:Boolean = true):void
                {
                        contentView.addElementAt(c, index, dispatchEvent);
                }
@@ -159,7 +160,7 @@ package org.apache.flex.html.beads
                /**
                 * @private
                 */
-               public function getElementIndex(c:Object):int
+               public function getElementIndex(c:IChild):int
                {
                        return contentView.getElementIndex(c);
                }
@@ -167,7 +168,7 @@ package org.apache.flex.html.beads
                /**
                 * @private
                 */
-               public function removeElement(c:Object, dispatchEvent:Boolean = 
true):void
+               public function removeElement(c:IChild, dispatchEvent:Boolean = 
true):void
                {
                        contentView.removeElement(c, dispatchEvent);
                }
@@ -183,7 +184,7 @@ package org.apache.flex.html.beads
                /**
                 * @private
                 */
-               public function getElementAt(index:int):Object
+               public function getElementAt(index:int):IChild
                {
                        return contentView.getElementAt(index);
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
index 83ec293..198e787 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DropDownListView.as
@@ -29,13 +29,16 @@ package org.apache.flex.html.beads
        import org.apache.flex.core.BeadViewBase;
        import org.apache.flex.core.CSSTextField;
        import org.apache.flex.core.IBeadView;
+    import org.apache.flex.core.IChild;
        import org.apache.flex.core.IPopUpHost;
        import org.apache.flex.core.ISelectionModel;
        import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
        import org.apache.flex.core.ValuesManager;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
     import org.apache.flex.utils.SolidBorderUtil;
+    import org.apache.flex.utils.UIUtils;
     
     /**
      *  The DropDownListView class is the default view for
@@ -67,9 +70,9 @@ package org.apache.flex.html.beads
                        upTextField = new CSSTextField();
                        downTextField = new CSSTextField();
                        overTextField = new CSSTextField();
-            upSprite.addChild(upTextField.$textField);
-            overSprite.addChild(overTextField.$textField);
-            downSprite.addChild(downTextField.$textField);
+            upSprite.addChild(upTextField);
+            overSprite.addChild(overTextField);
+            downSprite.addChild(downTextField);
             upTextField.parentDrawsBackground = true;
             downTextField.parentDrawsBackground = true;
             overTextField.parentDrawsBackground = true;
@@ -277,21 +280,19 @@ package org.apache.flex.html.beads
          */
         public function set popUpVisible(value:Boolean):void
         {
+            var host:IPopUpHost;
             if (value != _popUpVisible)
             {
                 _popUpVisible = value;
                 if (value)
                 {
-                                       var root:Object = 
DisplayObject(_strand).root;
-                                       var host:DisplayObjectContainer = 
DisplayObject(_strand).parent;
-                    while (host && !(host is IPopUpHost))
-                        host = host.parent;
-                    if (host)
-                        IPopUpHost(host).addElement(popUp);
+                                       host = UIUtils.findPopUpHost(_strand as 
IUIBase);
+                    IPopUpHost(host).addElement(popUp as IChild);
                 }
                 else
                 {
-                    DisplayObject(_popUp).parent.removeChild(_popUp as 
DisplayObject);                    
+                    host = UIUtils.findPopUpHost(_strand as IUIBase);
+                    IPopUpHost(host).removeElement(popUp as IChild);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
index f324495..3083465 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageAndTextButtonView.as
@@ -141,7 +141,7 @@ package org.apache.flex.html.beads
                        {
                                var loader:Loader = new Loader();
                                sprite.addChildAt(loader, 0);
-                sprite.addChild(textField.$textField);
+                sprite.addChild(textField);
                                var url:String = backgroundImage as String;
                                loader.load(new URLRequest(url));
                                
loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function 
(e:flash.events.Event):void { 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
index c7a3b39..77c970a 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
@@ -95,6 +95,7 @@ package org.apache.flex.html.beads
                
                /**
                 * @private
+         * @flexjsignorecoercion HTMLImageELement
                 */
                private function handleUrlChange(event:Event):void
                {
@@ -114,7 +115,7 @@ package org.apache.flex.html.beads
             {
                                if (_model.source) {
                        var host:IUIBase = _strand as IUIBase;
-                       host.element.addEventListener('load',
+                       (host.element as 
HTMLImageElement).addEventListener('load',
                            loadHandler, false);
                        host.addEventListener('sizeChanged',
                            sizeChangedHandler);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
index 29a203f..245c3d3 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/RadioButtonView.as
@@ -68,7 +68,7 @@ package org.apache.flex.html.beads
                                var icon:Shape = new Shape();
                                icon.name = "icon";
                                s.addChild(icon);
-                               s.addChild(tf.$textField);
+                               s.addChild(tf);
                        }
                }
                

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
index 2e99eef..e9b4ea5 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SliderThumbView.as
@@ -124,7 +124,7 @@ package org.apache.flex.html.beads
                 element.style.top = '-10px';
                 element.style.left = '20px';
                 
-                host.element.appendChild(element);
+                (host.element as WrappedHTMLElement).appendChild(element);
                 
                 element.flexjs_wrapper = this;
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
index e5a176f..f3b5359 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextAreaView.as
@@ -124,7 +124,7 @@ package org.apache.flex.html.beads
                        
                        // for input, listen for changes to the _textField and 
update
                        // the model
-                       textField.$textField.addEventListener(Event.SCROLL, 
textScrollHandler);
+                       textField.addEventListener(Event.SCROLL, 
textScrollHandler);
                        
                        IEventDispatcher(host).addEventListener("widthChanged", 
sizeChangedHandler);
                        
IEventDispatcher(host).addEventListener("heightChanged", sizeChangedHandler);
@@ -153,7 +153,7 @@ package org.apache.flex.html.beads
                
                private function textScrollHandler(event:Event):void
                {
-                       var tf:TextField = textField.$textField;
+                       var tf:TextField = textField;
                        var visibleLines:int = tf.bottomScrollV - tf.scrollV + 
1;
                        var scrollableLines:int = textField.numLines - 
visibleLines + 1;
                        var vsbm:ScrollBarModel = 
ScrollBarModel(vScrollBar.model);
@@ -190,7 +190,7 @@ package org.apache.flex.html.beads
                private function scrollHandler(event:Event):void
                {
                        var vpos:Number = 
IScrollBarModel(vScrollBar.model).value;
-                       textField.$textField.scrollV = vpos;
+                       textField.scrollV = vpos;
                }
                
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
index 44af468..e3d84dd 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextButtonView.as
@@ -103,9 +103,9 @@ package org.apache.flex.html.beads
                        shape.graphics.beginFill(0xCCCCCC);
                        shape.graphics.drawRect(0, 0, 10, 10);
                        shape.graphics.endFill();
-                       button.upState = upTextField.$textField;
-                       button.downState = downTextField.$textField;
-                       button.overState = overTextField.$textField;
+                       button.upState = upTextField;
+                       button.downState = downTextField;
+                       button.overState = overTextField;
                        button.hitTestState = shape;
                        upTextField.styleParent = value;
                        downTextField.styleParent = value;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
index ead9d7b..0fb9542 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as
@@ -95,7 +95,7 @@ package org.apache.flex.html.beads
             IEventDispatcher(_strand).addEventListener("widthChanged", 
widthChangeHandler);
             IEventDispatcher(_strand).addEventListener("heightChanged", 
heightChangeHandler);
             IEventDispatcher(_strand).addEventListener("sizeChanged", 
sizeChangeHandler);
-                       UIBase(value).addElement(_textField);
+                       
UIBase(value).$displayObjectContainer.addChild(_textField);
                        if (_textModel.text !== null)
                                text = _textModel.text;
                        if (_textModel.html !== null)
@@ -277,7 +277,7 @@ package org.apache.flex.html.beads
                 }
                 c = input.indexOf("<span", c1);
             }
-            _textField.$textField.styleSheet = ss;   
+            _textField.styleSheet = ss;   
             _textField.htmlText = input;
         }
         

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
index 63d04e2..721ef94 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
@@ -94,7 +94,7 @@ package org.apache.flex.html.beads
                        loader.y = 0;
                        loader.width = host.width;
                        loader.height = host.height;
-                       (host as UIBase).addElement(loader);
+                       (host as 
UIBase).$displayObjectContainer.addChild(loader);
                }
 
                /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/472c7af2/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
index 25c1ce1..4a8115f 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/controllers/EditableTextKeyboardController.as
@@ -70,7 +70,7 @@ package org.apache.flex.html.beads.controllers
                        
                        var viewBead:ITextFieldView = 
_strand.getBeadByType(ITextFieldView) as ITextFieldView;
                        textField = viewBead.textField;
-                       textField.$textField.addEventListener("change", 
inputChangeHandler);
+                       textField.addEventListener("change", 
inputChangeHandler);
                }
                
                /**

Reply via email to