You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/08/02 19:03:13 UTC

[06/10] git commit: [flex-asjs] [refs/heads/refactor-sprite] - refactor again so UIHTMLElementWrapper is the base for all exposed components, but CSSShape and friend are simple subclasses of Flash display objects and are directly added to the display lis

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);
 		}
 		
 		/**