You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/05/04 17:15:49 UTC

[royale-asjs] 03/05: rename and refactor some interfaces and implementations so it is easier to replicate hosts in other component sets like MXRoyale

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 7ff361e8eaf14d1e8c902611cda8f6f9e016210c
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri May 4 10:12:35 2018 -0700

    rename and refactor some interfaces and implementations so it is easier to replicate hosts in other component sets like MXRoyale
---
 .../royale/org/apache/royale/core/ContainerBase.as |   2 +-
 .../royale/core/ContainerBaseStrandChildren.as     |   6 +-
 .../org/apache/royale/core/DataContainerBase.as    |  53 ++------
 .../apache/royale/core/{IList.as => IDataGrid.as}  |  22 +--
 ...ionModel.as => IStrandWithPresentationModel.as} |  16 ++-
 .../main/royale/org/apache/royale/core/UIBase.as   |   2 +-
 .../royale/org/apache/royale/html/DataContainer.as |   8 +-
 .../main/royale/org/apache/royale/html/DataGrid.as |  23 ++--
 .../src/main/royale/org/apache/royale/html/List.as |   6 +-
 .../org/apache/royale/html/beads/ContainerView.as  |  27 +++-
 .../apache/royale/html/beads/DataContainerView.as  | 148 ++++-----------------
 .../org/apache/royale/html/beads/DataGridView.as   |  15 ++-
 .../beads/DataItemRendererFactoryForArrayData.as   |  10 +-
 .../beads/DataItemRendererFactoryForArrayList.as   |  11 +-
 .../DynamicAddItemRendererForArrayListData.as      |  10 +-
 ...cRemoveAllByNullItemRendererForArrayListData.as |   9 +-
 ...DynamicRemoveAllItemRendererForArrayListData.as |   9 +-
 .../DynamicRemoveItemRendererForArrayListData.as   |   9 +-
 .../DynamicUpdateItemRendererForArrayListData.as   |   9 +-
 .../org/apache/royale/html/beads/ListView.as       |   1 -
 .../beads/TextItemRendererFactoryForArrayData.as   |  10 +-
 .../TextItemRendererFactoryForStringVectorData.as  |  11 +-
 .../org/apache/royale/html/beads/TreeGridView.as   |   6 +-
 .../royale/html/beads/VirtualDataContainerView.as  |   1 -
 .../VirtualDataItemRendererFactoryForArrayData.as  |  37 +++++-
 .../apache/royale/html/beads/VirtualListView.as    |  84 +-----------
 .../beads/layouts/VirtualListVerticalLayout.as     |  15 ++-
 .../projects/Core/src/main/royale/CoreClasses.as   |   3 +-
 ...vate.as => IContainerBaseStrandChildrenHost.as} |   9 +-
 .../apache/royale/core/IItemRendererProvider.as    |  10 --
 .../apache/royale/core/IStrandWithModelView.as}    |  24 ++--
 .../apache/royale/core/ItemRendererClassFactory.as |   2 +-
 32 files changed, 245 insertions(+), 363 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBase.as
index 7703f8c..0b62964 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBase.as
@@ -65,7 +65,7 @@ package org.apache.royale.core
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-	public class ContainerBase extends GroupBase implements IStrandPrivate
+	public class ContainerBase extends GroupBase implements IContainerBaseStrandChildrenHost
 	{
         /**
          *  Constructor.
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBaseStrandChildren.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBaseStrandChildren.as
index ef4f8bf..26db4b4 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBaseStrandChildren.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/ContainerBaseStrandChildren.as
@@ -40,16 +40,16 @@ package org.apache.royale.core
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
-		 * 	@royaleignorecoercion org.apache.royale.core.IStrandPrivate
+		 * 	@royaleignorecoercion org.apache.royale.core.IContainerBaseStrandChildrenHost
          */
 		public function ContainerBaseStrandChildren(owner:IParent)
 		{
 			super();
 			
-			this.owner = owner as IStrandPrivate;
+			this.owner = owner as IContainerBaseStrandChildrenHost;
 		}
 		
-		public var owner:IStrandPrivate;
+		public var owner:IContainerBaseStrandChildrenHost;
 		
 		/**
 		 *  @private
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as
index c2ee3a6..06440f2 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as
@@ -24,7 +24,6 @@ package org.apache.royale.core
 	import org.apache.royale.events.ItemAddedEvent;
 	import org.apache.royale.events.ItemRemovedEvent;
 	import org.apache.royale.html.supportClasses.DataItemRenderer;
-	import org.apache.royale.utils.loadBeadFromValuesManager;
 	
 	/**
 	 *  Indicates that the initialization of the list is complete.
@@ -45,7 +44,7 @@ package org.apache.royale.core
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-	public class DataContainerBase extends ContainerBase implements IItemRendererParent, IList
+	public class DataContainerBase extends ContainerBase
 	{
         /**
          *  Constructor.
@@ -78,13 +77,7 @@ package org.apache.royale.core
 			}
 			
 			super.addedToParent();
-			
-			// Even though super.addedToParent dispatched "beadsAdded", DataContainer still needs its data mapper
-			// and item factory beads. These beads are added after super.addedToParent is called in case substitutions
-			// were made; these are just defaults extracted from CSS.
-			loadBeadFromValuesManager(IDataProviderItemRendererMapper, "iDataProviderItemRendererMapper", this);
-			loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", this);
-			
+						
 			dispatchEvent(new Event("initComplete"));
 		}
 		
@@ -100,18 +93,18 @@ package org.apache.royale.core
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.0
 		 * 	@royaleignorecoercion org.apache.royale.html.beads.IListView
-		 */
 		public function get dataGroup():IItemRendererParent
 		{
 			// The JS-side's view.dataGroup is actually this instance of DataContainerBase
 			return (view as IListView).dataGroup;
 		}
+		 */
 		
 		/*
 		* IItemRendererProvider
 		*/
 		
-		private var _itemRenderer:IFactory;
+		private var _itemRenderer:IFactory = null;
 		
 		/**
 		 *  The class or factory used to display each item.
@@ -129,33 +122,7 @@ package org.apache.royale.core
 		{
 			_itemRenderer = value;
 		}
-		
-		/**
-		 * Returns whether or not the itemRenderer property has been set.
-		 *
-		 *  @see org.apache.royale.core.IItemRendererProvider
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
-		 */
-		public function get hasItemRenderer():Boolean
-		{
-			var result:Boolean = false;
-			
-			COMPILE::SWF {
-				result = _itemRenderer != null;
-			}
 				
-				COMPILE::JS {
-					var test:* = _itemRenderer;
-					result = _itemRenderer !== null && test !== undefined;
-				}
-				
-				return result;
-		}
-		
 		/*
 		* IItemRendererParent
 		*/
@@ -168,12 +135,12 @@ package org.apache.royale.core
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.8
-		 */
 		public function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void
 		{
 			addElement(renderer, dispatchAdded);
 			dispatchItemAdded(renderer);
 		}
+		 */
 		
 		/**
 		 * @copy org.apache.royale.core.IItemRendererParent#addItemRendererAt()
@@ -183,7 +150,6 @@ package org.apache.royale.core
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9
-		 */
 		public function addItemRendererAt(renderer:IItemRenderer, index:int):void
 		{
 			addElementAt(renderer, index, true);
@@ -197,6 +163,7 @@ package org.apache.royale.core
 			
 			dispatchEvent(newEvent);
 		}
+		 */
 		/**
 		 * @copy org.apache.royale.core.IItemRendererParent#removeItemRenderer()
 		 * @private
@@ -205,7 +172,6 @@ package org.apache.royale.core
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.8
-		 */
 		public function removeItemRenderer(renderer:IItemRenderer):void
 		{
 			removeElement(renderer);
@@ -215,6 +181,7 @@ package org.apache.royale.core
 			
 			dispatchEvent(newEvent);
 		}
+		 */
 		
 		/**
 		 * @copy org.apache.royale.core.IItemRendererParent#removeAllItemRenderers()
@@ -224,7 +191,6 @@ package org.apache.royale.core
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.8
-		 */
 		public function removeAllItemRenderers():void
 		{
 			while (numElements > 0) {
@@ -232,6 +198,7 @@ package org.apache.royale.core
 				removeElement(child);
 			}
 		}
+		 */
 		
 		/**
 		 *  @copy org.apache.royale.core.IItemRendererParent#getItemRendererForIndex()
@@ -241,12 +208,12 @@ package org.apache.royale.core
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.8
 		 * 	@royaleignorecoercion org.apache.royale.core.IItemRenderer
-		 */
 		public function getItemRendererForIndex(index:int):IItemRenderer
 		{
 			if (index < 0 || index >= numElements) return null;
 			return getElementAt(index) as IItemRenderer;
 		}
+		 */
 		
 		/**
 		 *  Refreshes the itemRenderers. Useful after a size change by the data group.
@@ -257,7 +224,6 @@ package org.apache.royale.core
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.8
 		 * 	@royaleignorecoercion org.apache.royale.html.supportClasses.DataItemRenderer
-		 */
 		public function updateAllItemRenderers():void
 		{
 			var n:Number = numElements;
@@ -270,6 +236,7 @@ package org.apache.royale.core
 				}
 			}
 		}
+		 */
 
     }
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IList.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IDataGrid.as
similarity index 64%
rename from frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IList.as
rename to frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IDataGrid.as
index f25d036..ccdcd5e 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IList.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IDataGrid.as
@@ -18,12 +18,10 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.core
 {
-	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IItemRendererProvider;
 
     /**
-     *  The IList interface is implemented by any component that supports being
-	 *  a "list" which means its content is generated by a factory and whose
+     *  The IDataGrid interface is implemented by any component that supports being
+	 *  a "DataGrid" which means its content is generated by a factory and whose
 	 *  children are item renderers (IItemRenderer).
      * 
      *  @langversion 3.0
@@ -31,18 +29,10 @@ package org.apache.royale.core
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-	public interface IList extends IItemRendererProvider
+	public interface IDataGrid extends IParentIUIBase, IContainer, IStrandWithPresentationModel
 	{
-        /**
-         *  Returns the component within the list (maybe even the list shell itself)
-		 *  which will be the parent of each itemRenderer.
-         * 
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
-         */
-		function get dataGroup():IItemRendererParent;
-		
+        function get model():Object;
+        function set model(value:Object):void;
+        
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IListWithPresentationModel.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IStrandWithPresentationModel.as
similarity index 69%
copy from frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IListWithPresentationModel.as
copy to frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IStrandWithPresentationModel.as
index 3e24bfc..2d9be95 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IListWithPresentationModel.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IStrandWithPresentationModel.as
@@ -18,29 +18,31 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.core
 {
-	import org.apache.royale.core.IListPresentationModel;
+	import org.apache.royale.core.IBead;
 
     /**
-     *  The IListWithPresentationModel interface is implemented by any IList
-	 *  that supports a separate IListPresentationModel
+     *  The IStrandWithPresentationModel interface is implemented by any IStrand
+	 *  that supports a separate bead that is a presentationModel.  A presentationModel
+     *  is a set of properties that act as parameters to the View as opposed to the
+     *  regular model that is the data to be displayed by the view.  A simple example
+     *  is the rowHeight of a vertical list.
      * 
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-	public interface IListWithPresentationModel extends IList
+	public interface IStrandWithPresentationModel
 	{
         /**
-         *  Returns the component within the list (maybe even the list shell itself)
-		 *  which will be the parent of each itemRenderer.
+         *  Returns the bead that holds the properties for the presentationModel.
          * 
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
          */
-		function get presentationModel():IListPresentationModel;
+		function get presentationModel():IBead;
 		
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
index fc0b96f..fc91aff 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
@@ -171,7 +171,7 @@ package org.apache.royale.core
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-	public class UIBase extends HTMLElementWrapper implements IStrandWithModel, IEventDispatcher, IParentIUIBase, IStyleableObject, ILayoutChild, IRoyaleElement
+	public class UIBase extends HTMLElementWrapper implements IStrandWithModelView, IEventDispatcher, IParentIUIBase, IStyleableObject, ILayoutChild, IRoyaleElement
 	{
         /**
          *  Constructor.
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
index 40e8d75..e8d3f9f 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
@@ -21,6 +21,7 @@ package org.apache.royale.html
 	import org.apache.royale.core.DataContainerBase;
 	
 	import org.apache.royale.core.ContainerBaseStrandChildren;
+    import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IContentViewHost;
 	import org.apache.royale.core.IChild;
 	import org.apache.royale.core.IDataProviderItemRendererMapper;
@@ -29,8 +30,7 @@ package org.apache.royale.html
 	import org.apache.royale.core.IItemRenderer;
 	import org.apache.royale.core.IItemRendererParent;
 	import org.apache.royale.core.ILayoutView;
-	import org.apache.royale.core.IList;
-    import org.apache.royale.core.IListWithPresentationModel;
+    import org.apache.royale.core.IStrandWithPresentationModel;
 	import org.apache.royale.core.IListPresentationModel;
 	import org.apache.royale.core.IRollOverModel;
 	import org.apache.royale.core.IDataProviderModel;
@@ -74,7 +74,7 @@ package org.apache.royale.html
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.0
 	 */
-	public class DataContainer extends DataContainerBase implements IListWithPresentationModel
+	public class DataContainer extends DataContainerBase implements IStrandWithPresentationModel
 	{
 		/**
 		 *  constructor.
@@ -143,7 +143,7 @@ package org.apache.royale.html
 		 *  @productversion Royale 0.9
 		 *  @royaleignorecoercion org.apache.royale.core.IListPresentationModel
 		 */
-		public function get presentationModel():IListPresentationModel
+		public function get presentationModel():IBead
 		{
 			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
 			if (presModel == null) {
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataGrid.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataGrid.as
index 7cc59e4..6075eaa 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataGrid.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataGrid.as
@@ -18,15 +18,16 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html
 {
+	import org.apache.royale.core.GroupBase;
 	import org.apache.royale.core.IBead;
+	import org.apache.royale.core.IChangePropagator;
+	import org.apache.royale.core.IDataGrid;
 	import org.apache.royale.core.IDataGridModel;
 	import org.apache.royale.core.IDataGridPresentationModel;
 	import org.apache.royale.core.UIBase;
-	import org.apache.royale.core.GroupBase;
 	import org.apache.royale.core.ValuesManager;
-	import org.apache.royale.html.beads.models.DataGridPresentationModel;
 	import org.apache.royale.events.Event;
-	import org.apache.royale.core.IChangePropagator;
+	import org.apache.royale.html.beads.models.DataGridPresentationModel;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 	
 	[Event(name="change", type="org.apache.royale.events.Event")]
@@ -45,7 +46,7 @@ package org.apache.royale.html
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.0
 	 */
-	public class DataGrid extends GroupBase
+	public class DataGrid extends GroupBase implements IDataGrid
 	{
 		/**
 		 *  constructor.
@@ -146,7 +147,7 @@ package org.apache.royale.html
 		 *  @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
 		 *  @royaleignorecoercion org.apache.royale.core.IBead
 		 */
-		public function get presentationModel():IDataGridPresentationModel
+		public function get presentationModel():IBead
 		{
 			if (_presentationModel == null) {
 				var c:Class = ValuesManager.valuesImpl.getValue(this, "iDataGridPresentationModel");
@@ -161,9 +162,9 @@ package org.apache.royale.html
 		/**
 		 * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
 		 */
-		public function set presentationModel(value:IDataGridPresentationModel):void
+		public function set presentationModel(value:IBead):void
 		{
-			_presentationModel = value;
+			_presentationModel = value as IDataGridPresentationModel;
 		}
 				
 		/**
@@ -173,14 +174,18 @@ package org.apache.royale.html
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9
+		 *  @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
 		 */
 		public function get rowHeight():Number
 		{
-			return presentationModel.rowHeight;
+			return (presentationModel as IDataGridPresentationModel).rowHeight;
 		}
+        /**
+         * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
+         */
 		public function set rowHeight(value:Number):void
 		{
-			presentationModel.rowHeight = value;
+			(presentationModel as IDataGridPresentationModel).rowHeight = value;
 		}
 		
 		override public function addedToParent():void
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/List.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/List.as
index a9e3b50..8124a28 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/List.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/List.as
@@ -18,6 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html
 {
+	import org.apache.royale.core.IListPresentationModel;
 	import org.apache.royale.core.IRollOverModel;
 	import org.apache.royale.core.ISelectionModel;
 
@@ -131,14 +132,15 @@ package org.apache.royale.html
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.0
+         *  @royaleignorecoercion org.apache.royale.core.IListPresentationModel
 		 */
 		public function get rowHeight():Number
 		{
-			return presentationModel.rowHeight;
+			return (presentationModel as IListPresentationModel).rowHeight;
 		}
 		public function set rowHeight(value:Number):void
 		{
-			presentationModel.rowHeight = value;
+			(presentationModel as IListPresentationModel).rowHeight = value;
 		}
 
 		/**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as
index f72ebd9..84c40e1 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as
@@ -23,7 +23,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IBeadLayout;
 	import org.apache.royale.core.IBeadView;
-    import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
+	import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
 	import org.apache.royale.core.IChild;
 	import org.apache.royale.core.IContainer;
 	import org.apache.royale.core.IContainerView;
@@ -37,9 +37,9 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IUIBase;
 	import org.apache.royale.core.IViewport;
 	import org.apache.royale.core.IViewportModel;
-    import org.apache.royale.core.layout.EdgeData;
 	import org.apache.royale.core.UIBase;
 	import org.apache.royale.core.ValuesManager;
+	import org.apache.royale.core.layout.EdgeData;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.geom.Rectangle;
@@ -219,6 +219,29 @@ package org.apache.royale.html.beads
 		{
             var host:ILayoutChild = this.host as ILayoutChild;
             var vm:IViewportModel = viewportModel;
+            COMPILE::SWF
+            {
+                // if earlier layouts set the size of the host
+                // then it won't reflect changes in content size
+                if (host is UIBase)
+                {
+                    var uiBase:UIBase = host as UIBase;
+                    if (host.isWidthSizedToContent())
+                    {
+                        if (uiBase.width != uiBase.$width)
+                        {
+                            host.setWidth(uiBase.$width, true);
+                        }
+                    }
+                    if (host.isHeightSizedToContent())
+                    {
+                        if (uiBase.height != uiBase.$height)
+                        {
+                            host.setHeight(uiBase.$height, true);
+                        }
+                    }                    
+                }
+            }
 			var hostWidth:Number = host.width;
 			var hostHeight:Number = host.height;
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
index fc4ba3b..560daf1 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
@@ -24,10 +24,11 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBeadLayout;
 	import org.apache.royale.core.IBeadModel;
 	import org.apache.royale.core.IBeadView;
-	import org.apache.royale.core.IDataProviderModel;
+    import org.apache.royale.core.IDataProviderItemRendererMapper;
+    import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IItemRenderer;
+    import org.apache.royale.core.IItemRendererClassFactory;
 	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.IParent;
 	import org.apache.royale.core.IParentIUIBase;
 	import org.apache.royale.core.ISelectableItemRenderer;
@@ -42,6 +43,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.html.supportClasses.Border;
 	import org.apache.royale.html.supportClasses.DataGroup;
+	import org.apache.royale.utils.loadBeadFromValuesManager;
 
 	/**
 	 *  The DataContainerView provides the visual elements for the DataContainer.
@@ -52,7 +54,6 @@ package org.apache.royale.html.beads
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.8
 	 */
-	COMPILE::JS
 	public class DataContainerView extends ContainerView implements IListView
 	{
 		public function DataContainerView()
@@ -73,9 +74,17 @@ package org.apache.royale.html.beads
 			_strand = value;
 			super.strand = value;
 			
+            // Even though super.addedToParent dispatched "beadsAdded", DataContainer still needs its data mapper
+            // and item factory beads. These beads are added after super.addedToParent is called in case substitutions
+            // were made; these are just defaults extracted from CSS.
+            loadBeadFromValuesManager(IDataProviderItemRendererMapper, "iDataProviderItemRendererMapper", value);
+            loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", value);
+            
 			host.addEventListener("beadsAdded", beadsAddedHandler);
+            //host.addEventListener("itemsCreated", itemsCreatedHandler); in beadsAddedHandler
 		}
 		
+        
 		protected var dataModel:IDataProviderModel;
 		
 		/**
@@ -95,14 +104,7 @@ package org.apache.royale.html.beads
 			host.addEventListener("itemsCreated", itemsCreatedHandler);
 			dataModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
 		}
-		
-		/**
-		 * @private
-		 */
-		override protected function handleInitComplete(event:Event):void
-		{
-			super.handleInitComplete(event);
-		}
+        
 		
 		/**
 		 * @private
@@ -119,115 +121,23 @@ package org.apache.royale.html.beads
 		protected function dataProviderChangeHandler(event:Event):void
 		{
 			// trace("DataContainerView: dataProviderChangeHandler");
-			performLayout(event);
-		}
-	}
-	
-	COMPILE::SWF
-	public class DataContainerView extends ContainerView implements IListView
-	{
-		public function DataContainerView()
-		{
-			super();
-		}
-						
-		protected var dataModel:IDataProviderModel;
-		
-		/**
-		 * @private
-		 */
-		override public function get host():IUIBase
-		{
-			return _strand as IUIBase;
-		}
-		
-		/**
-		 *  @copy org.apache.royale.core.IBead#strand
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.8
-		 */
-		override public function set strand(value:IStrand):void
-		{
-			_strand = value;
-			super.strand = value;
-			
-			host.addEventListener("beadsAdded", beadsAddedHandler);
-			host.addEventListener("itemsCreated", itemsCreatedHandler);
-		}
-		
-		override protected function completeSetup():void
-		{
-			super.completeSetup();
-			
-			// list is not interested in UI children, it wants to know when new items
-			// have been added or the dataProvider has changed.
-//			host.removeEventListener("childrenAdded", childrenChangedHandler);
-//			host.removeEventListener("childrenAdded", performLayout);
-		}
-		
-		protected function beadsAddedHandler(event:Event):void
-		{
-			dataModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
-			dataModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
-		}
-		
-		override protected function handleInitComplete(event:Event):void
-		{
-			super.handleInitComplete(event);
-		}
-		
-		/**
-		 *  The area holding the itemRenderers.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.8
-		 */
-		public function get dataGroup():IItemRendererParent
-		{
-			return super.contentView as IItemRendererParent;
-		}
-				
-		/**
-		 * @private
-		 */
-		override public function get resizableView():IUIBase
-		{
-			return _strand as IUIBase;
-		}
-		
-		/**
-		 * @private
-		 */
-		protected function itemsCreatedHandler(event:Event):void
-		{
-			host.dispatchEvent(new Event("layoutNeeded"));
-		}
-		
-		/**
-		 * @private
-		 */
-		protected function dataProviderChangeHandler(event:Event):void
-		{
-			host.dispatchEvent(new Event("layoutNeeded"));
-		}
-		        
+            COMPILE::JS
+            {
+    			performLayout(event);
+            }
+            COMPILE::SWF
+            {
+                host.dispatchEvent(new Event("layoutNeeded"));                
+            }
+		}
+        
         /**
-         *  respond to a change in size or request to re-layout everything
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9
+         * @private
          */
-		override protected function resizeHandler(event:Event):void
-		{
-			// might need to do something here, not sure yet.
-			super.resizeHandler(event);
-		}
+        COMPILE::SWF
+        override public function get resizableView():IUIBase
+        {
+            return _strand as IUIBase;
+        }
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
index fe14fc3..462159c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
@@ -22,6 +22,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBeadModel;
 	import org.apache.royale.core.IBeadView;
 	import org.apache.royale.core.IChild;
+    import org.apache.royale.core.IDataGrid;
 	import org.apache.royale.core.IDataGridModel;
 	import org.apache.royale.core.IDataGridPresentationModel;
 	import org.apache.royale.core.IUIBase;
@@ -29,7 +30,6 @@ package org.apache.royale.html.beads
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.html.Container;
-	import org.apache.royale.html.DataGrid;
 	import org.apache.royale.html.DataGridButtonBar;
 	import org.apache.royale.html.beads.layouts.ButtonBarLayout;
 	import org.apache.royale.html.supportClasses.DataGridColumnList;
@@ -108,7 +108,7 @@ package org.apache.royale.html.beads
 			 */
 			override protected function handleInitComplete(event:Event):void
 			{
-				var host:DataGrid = _strand as DataGrid;
+				var host:IDataGrid = _strand as IDataGrid;
 
 				// see if there is a presentation model already in place. if not, add one.
 				var sharedModel:IDataGridModel = host.model as IDataGridModel;
@@ -131,9 +131,9 @@ package org.apache.royale.html.beads
 				var bblayout:ButtonBarLayout = new ButtonBarLayout();
 				_header.addBead(bblayout as IBead);
 				_header.addBead(new Viewport() as IBead);
-				host.addElement(_header as IChild);
+				host.strandChildren.addElement(_header as IChild);
 
-				host.addElement(_listArea as IChild);
+				host.strandChildren.addElement(_listArea as IChild);
 
 				handleDataProviderChanged(event);
 
@@ -204,12 +204,13 @@ package org.apache.royale.html.beads
 			 * @royaleignorecoercion org.apache.royale.core.IDataGridModel
 			 * @royaleignorecoercion org.apache.royale.core.IBead
 			 * @royaleignorecoercion org.apache.royale.core.IChild
-			 * @royaleignorecoercion org.apache.royale.html.DataGrid
+			 * @royaleignorecoercion org.apache.royale.core.IDataGrid
+			 * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
 			 * @royaleignorecoercion org.apache.royale.html.supportClasses.IDataGridColumn
 			 */
 			private function createLists():void
 			{
-				var host:DataGrid = _strand as DataGrid;
+				var host:IDataGrid = _strand as IDataGrid;
 				
 				// get the name of the class to use for the columns
 				var columnClassName:String = ValuesManager.valuesImpl.getValue(host, "columnClassName") as String;
@@ -218,7 +219,7 @@ package org.apache.royale.html.beads
 				}
 
 				var sharedModel:IDataGridModel = host.model as IDataGridModel;
-				var presentationModel:IDataGridPresentationModel = host.presentationModel;
+				var presentationModel:IDataGridPresentationModel = host.presentationModel as IDataGridPresentationModel;
 
 				_lists = [];
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
index dc1f1c4..90ce86c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
@@ -26,6 +26,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.core.IUIBase;
 	import org.apache.royale.core.SimpleCSSStyles;
 	import org.apache.royale.core.UIBase;
@@ -36,7 +37,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.events.ItemRendererEvent;
 	import org.apache.royale.html.List;
 	
-	import org.apache.royale.core.IList;
+    import org.apache.royale.html.beads.IListView;
 	import org.apache.royale.core.IChild;
 	import org.apache.royale.core.ILayoutHost;
 	import org.apache.royale.core.IParentIUIBase;
@@ -158,7 +159,8 @@ package org.apache.royale.html.beads
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.8
 		 *  @royaleignorecoercion Array
-		 *  @royaleignorecoercion org.apache.royale.core.IList
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 *  @royaleignorecoercion org.apache.royale.core.IListPresentationModel
 		 *  @royaleignorecoercion org.apache.royale.core.UIBase
 		 *  @royaleignorecoercion org.apache.royale.core.ISelectableItemRenderer
@@ -171,8 +173,8 @@ package org.apache.royale.html.beads
 			if (!dp)
 				return;
 			
-			var list:IList = _strand as IList;
-			var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+			var dataGroup:IItemRendererParent = view.dataGroup;
 			
 			dataGroup.removeAllItemRenderers();
 			
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
index a24ede7..02e6cd0 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
@@ -27,6 +27,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.core.SimpleCSSStyles;
 	import org.apache.royale.core.UIBase;
 	import org.apache.royale.events.Event;
@@ -36,7 +37,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.html.supportClasses.DataItemRenderer;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 
-	import org.apache.royale.core.IList;
+    import org.apache.royale.html.beads.IListView;
 	
 	[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
 	
@@ -146,7 +147,9 @@ package org.apache.royale.html.beads
 		}
 		
 		/**
-		 * @private
+		 *  @private
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 */
 		protected function dataProviderChangeHandler(event:Event):void
 		{
@@ -154,8 +157,8 @@ package org.apache.royale.html.beads
 			if (!dp)
 				return;
 			
-			var list:IList = _strand as IList;
-			var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+			var dataGroup:IItemRendererParent = view.dataGroup;
 			
 			dataGroup.removeAllItemRenderers();
 			
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
index e8f5ed4..da86642 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
@@ -22,16 +22,18 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IItemRendererClassFactory;
 	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
+	import org.apache.royale.core.IItemRendererProvider;
 	import org.apache.royale.core.IListPresentationModel;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.core.SimpleCSSStyles;
 	import org.apache.royale.core.UIBase;
 	import org.apache.royale.events.CollectionEvent;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.IListView;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 
     /**
@@ -165,12 +167,14 @@ package org.apache.royale.html.beads
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 */
 		public function get itemRendererParent():IItemRendererParent
 		{
 			if (_itemRendererParent == null) {
-				var list:IList = _strand as IList;
-				_itemRendererParent = list.dataGroup;
+				var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+				_itemRendererParent = view.dataGroup;
 			}
 			return _itemRendererParent;
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
index 8215562..ab64441 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
@@ -21,12 +21,13 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.events.CollectionEvent;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.IListView;
 
 	/**
 	 * Handles the removal of all itemRenderers once data source is being set to null.
@@ -135,12 +136,14 @@ package org.apache.royale.html.beads
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 */
 		public function get itemRendererParent():IItemRendererParent
 		{
 			if (_itemRendererParent == null) {
-				var list:IList = _strand as IList;
-				_itemRendererParent = list.dataGroup;
+                var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+                _itemRendererParent = view.dataGroup;
 			}
 			return _itemRendererParent;
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
index 558cf0a..c78805c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
@@ -21,12 +21,13 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.events.CollectionEvent;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.IListView;
 
 	/**
 	 * Handles the removal of all itemRenderers once the all items has been removed
@@ -149,12 +150,14 @@ package org.apache.royale.html.beads
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 */
 		public function get itemRendererParent():IItemRendererParent
 		{
 			if (_itemRendererParent == null) {
-				var list:IList = _strand as IList;
-				_itemRendererParent = list.dataGroup;
+                var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+                _itemRendererParent = view.dataGroup;
 			}
 			return _itemRendererParent;
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
index e3f1a00..d0bee21 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
@@ -21,14 +21,15 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.core.UIBase;
 	import org.apache.royale.events.CollectionEvent;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.IListView;
 
 	/**
 	 * Handles the removal of an itemRenderer once the corresponding datum has been removed
@@ -155,12 +156,14 @@ package org.apache.royale.html.beads
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 */
 		public function get itemRendererParent():IItemRendererParent
 		{
 			if (_itemRendererParent == null) {
-				var list:IList = _strand as IList;
-				_itemRendererParent = list.dataGroup;
+                var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+                _itemRendererParent = view.dataGroup;
 			}
 			return _itemRendererParent;
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
index d939f9f..7661058 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
@@ -21,13 +21,14 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IDataProviderModel;
     import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.events.CollectionEvent;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.IListView;
 
     /**
 	 * Handles the update of an itemRenderer once the corresponding datum has been updated
@@ -150,12 +151,14 @@ package org.apache.royale.html.beads
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
 		 */
 		public function get itemRendererParent():IItemRendererParent
 		{
 			if (_itemRendererParent == null) {
-				var list:IList = _strand as IList;
-				_itemRendererParent = list.dataGroup;
+                var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+                _itemRendererParent = view.dataGroup;
 			}
 			return _itemRendererParent;
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
index e0d103d..8ff7ad2 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
@@ -24,7 +24,6 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBeadLayout;
 	import org.apache.royale.core.IBeadModel;
 	import org.apache.royale.core.IBeadView;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.IItemRenderer;
 	import org.apache.royale.core.IItemRendererParent;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
index 1e3536d..606708d 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
@@ -19,17 +19,18 @@
 package org.apache.royale.html.beads
 {
     import org.apache.royale.core.IBead;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.IDataProviderItemRendererMapper;
     import org.apache.royale.core.IItemRendererClassFactory;
     import org.apache.royale.core.IItemRendererParent;
     import org.apache.royale.core.ISelectionModel;
     import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
     import org.apache.royale.core.ValuesManager;
     import org.apache.royale.events.Event;
 	import org.apache.royale.events.EventDispatcher;
 	import org.apache.royale.events.ItemRendererEvent;
     import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.IListView;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 
 	[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
@@ -137,7 +138,8 @@ package org.apache.royale.html.beads
          *  @royaleignorecoercion Array
          *  @royaleignorecoercion org.apache.royale.html.beads.ITextItemRenderer
          *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         * @royaleignorecoercion org.apache.royale.core.IList
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
          */
 		private function dataProviderChangeHandler(event:Event):void
 		{
@@ -145,8 +147,8 @@ package org.apache.royale.html.beads
 			if (!dp)
 				return;
 
-			var list:IList = _strand as IList;
-			var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+			var dataGroup:IItemRendererParent = view.dataGroup;
 
 			dataGroup.removeAllItemRenderers();
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
index eceb5f3..7363e3d 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
@@ -22,14 +22,15 @@ package org.apache.royale.html.beads
     import org.apache.royale.core.IBead;
     import org.apache.royale.core.IItemRendererClassFactory;
     import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
     import org.apache.royale.core.ISelectionModel;
     import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.core.ValuesManager;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.EventDispatcher;
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.events.ItemRendererEvent;
+    import org.apache.royale.html.beads.IListView;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 	
 	[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
@@ -131,12 +132,16 @@ package org.apache.royale.html.beads
          */
         protected var dataGroup:IItemRendererParent;
 		
+        /**
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.core.IListView
+         */
 		private function dataProviderChangeHandler(event:Event):void
 		{
 			var dp:Vector.<String> = selectionModel.dataProvider as Vector.<String>;
 			
-			var list:IList = _strand as IList;
-			var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+			var dataGroup:IItemRendererParent = view.dataGroup;
 			
 			dataGroup.removeAllItemRenderers();
 			
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
index 7905fc3..757d04b 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
@@ -136,13 +136,14 @@ package org.apache.royale.html.beads
 		
 		/**
 		 * @private
+         * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
 		 */
 		protected function finishSetup(event:Event):void
 		{
 			var host:TreeGrid = _strand as TreeGrid;
 			
 			// see if there is a presentation model already in place. if not, add one.
-			var presentationModel:IDataGridPresentationModel = host.presentationModel;
+			var presentationModel:IDataGridPresentationModel = host.presentationModel as IDataGridPresentationModel;
 			var sharedModel:IDataGridModel = host.model as IDataGridModel;
 			IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",handleDataProviderChanged);
 			IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", handleSelectedIndexChanged);
@@ -248,6 +249,7 @@ package org.apache.royale.html.beads
 		
 		/**
 		 * @private
+         * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
 		 */
 		private function createColumns():void
 		{
@@ -259,7 +261,7 @@ package org.apache.royale.html.beads
 				columnClassName = "TreeGridColumn";
 			}
 			
-			var presentationModel:IDataGridPresentationModel = host.presentationModel;
+			var presentationModel:IDataGridPresentationModel = host.presentationModel as IDataGridPresentationModel;
 			var sharedModel:IDataGridModel = host.model as IDataGridModel;
 			
 			_lists = new Array();
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as
index 86905b8..0cb7bed 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as
@@ -27,7 +27,6 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IItemRenderer;
 	import org.apache.royale.core.IItemRendererParent;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.IParent;
 	import org.apache.royale.core.IParentIUIBase;
 	import org.apache.royale.core.ISelectableItemRenderer;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
index e78e67f..3aeaa44 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
@@ -25,11 +25,11 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IItemRendererClassFactory;
 	import org.apache.royale.core.IItemRendererParent;
 	import org.apache.royale.core.ILayoutHost;
-	import org.apache.royale.core.IList;
 	import org.apache.royale.core.IListPresentationModel;
 	import org.apache.royale.core.IParentIUIBase;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IStrandWithModelView;
 	import org.apache.royale.core.IUIBase;
 	import org.apache.royale.core.SimpleCSSStyles;
 	import org.apache.royale.core.UIBase;
@@ -39,6 +39,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.events.ItemRendererEvent;
 	import org.apache.royale.html.List;
+    import org.apache.royale.html.beads.IListView;
 	import org.apache.royale.html.supportClasses.DataItemRenderer;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 
@@ -151,6 +152,8 @@ package org.apache.royale.html.beads
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
          */		
 		protected function dataProviderChangeHandler(event:Event):void
 		{
@@ -158,23 +161,43 @@ package org.apache.royale.html.beads
 			if (!dp)
 				return;
 			
-			var list:IList = _strand as IList;
-			var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+			var dataGroup:IItemRendererParent = view.dataGroup;
 			
 			dataGroup.removeAllItemRenderers();
         }
         
+        /**
+         *  Free an item renderer for a given index.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
+         */
         public function freeItemRendererForIndex(index:int):void
         {
             var ir:ISelectableItemRenderer = rendererMap[index];
-            var list:IList = _strand as IList;
-            var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+            var dataGroup:IItemRendererParent = view.dataGroup;
             dataGroup.removeItemRenderer(ir);
             delete rendererMap[index];
         }
         
         private var rendererMap:Object = {};
         
+        /**
+         *  Get an item renderer for a given index.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.0
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
+         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
+         */
         public function getItemRendererForIndex(index:int, elementIndex:int):ISelectableItemRenderer
         {
             var ir:ISelectableItemRenderer = rendererMap[index];
@@ -185,8 +208,8 @@ package org.apache.royale.html.beads
 			ir = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
             var dataItemRenderer:DataItemRenderer = ir as DataItemRenderer;
 
-            var list:IList = _strand as IList;
-            var dataGroup:IItemRendererParent = list.dataGroup;
+            var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+            var dataGroup:IItemRendererParent = view.dataGroup;
 			dataGroup.addItemRendererAt(ir, elementIndex);
 			ir.index = index;
 			ir.labelField = labelField;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
index b689c2a..fcf2dbb 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
@@ -24,9 +24,6 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IBeadLayout;
 	import org.apache.royale.core.IBeadModel;
 	import org.apache.royale.core.IBeadView;
-	import org.apache.royale.core.IList;
-    import org.apache.royale.core.IListPresentationModel;
-    import org.apache.royale.core.IListWithPresentationModel;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.IItemRenderer;
 	import org.apache.royale.core.IItemRendererParent;
@@ -59,8 +56,7 @@ package org.apache.royale.html.beads
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.0
 	 */
-	COMPILE::JS
-	public class VirtualListView extends VirtualDataContainerView
+	public class VirtualListView extends DataContainerView // was VirtualDataContainerView
 	{
 		public function VirtualListView()
 		{
@@ -116,88 +112,22 @@ package org.apache.royale.html.beads
 				ir.hovered = true;
 			lastRollOverIndex = (listModel as IRollOverModel).rollOverIndex;
 		}
-	}
-
-	COMPILE::SWF
-	public class VirtualListView extends VirtualDataContainerView
-	{
-		public function VirtualListView()
-		{
-			super();
-		}
-
-		protected var listModel:ISelectionModel;
-
-		/**
-		 *  @copy org.apache.royale.core.IBead#strand
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
-		 */
-		override public function set strand(value:IStrand):void
-		{
-			_strand = value;
-			super.strand = value;
-		}
-
-		/**
-		 * @private
-		 */
-		override protected function handleInitComplete(event:Event):void
-		{
-			super.handleInitComplete(event);
-
-			listModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
-			listModel.addEventListener("selectedIndexChanged", selectionChangeHandler);
-			listModel.addEventListener("rollOverIndexChanged", rollOverIndexChangeHandler);
-		}
-
-		protected var lastSelectedIndex:int = -1;
-
-		/**
-		 * @private
-		 */
-		protected function selectionChangeHandler(event:Event):void
-		{
-			var ir:ISelectableItemRenderer = dataGroup.getItemRendererForIndex(lastSelectedIndex) as ISelectableItemRenderer;
-            if (ir)
-				ir.selected = false;
-			ir = dataGroup.getItemRendererForIndex(listModel.selectedIndex) as ISelectableItemRenderer;
-			if (ir)
-				ir.selected = true;
-            lastSelectedIndex = listModel.selectedIndex;
-		}
-
-		protected var lastRollOverIndex:int = -1;
-
-		/**
-		 * @private
-		 */
-		protected function rollOverIndexChangeHandler(event:Event):void
-		{
-			var ir:ISelectableItemRenderer = dataGroup.getItemRendererForIndex(lastRollOverIndex) as ISelectableItemRenderer;
-			if(ir)
-				ir.hovered = false;
-			ir = dataGroup.getItemRendererForIndex(IRollOverModel(listModel).rollOverIndex) as ISelectableItemRenderer;
-			if(ir)
-				ir.hovered = true;
-			
-			lastRollOverIndex = IRollOverModel(listModel).rollOverIndex;
-		}
-
+        
+        COMPILE::SWF
         override protected function calculateContentSize():Size
         {
             return _lastContentSize;
         }
         
+        COMPILE::SWF
         private var _lastContentSize:Size;
         
+        COMPILE::SWF
         public function set lastContentSize(value:Size):void
         {
             _lastContentSize = value;
         }
+        
 
-    }
+	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
index 4ab3896..f62ae94 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
@@ -20,7 +20,7 @@ package org.apache.royale.html.beads.layouts
 {
 	import org.apache.royale.core.IBeadLayout;
 	import org.apache.royale.core.IBeadModel;
-    import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
+	import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
 	import org.apache.royale.core.IDataProviderModel;
 	import org.apache.royale.core.IDataProviderVirtualItemRendererMapper;
 	import org.apache.royale.core.ILayoutChild;
@@ -28,15 +28,15 @@ package org.apache.royale.html.beads.layouts
 	import org.apache.royale.core.ILayoutParent;
 	import org.apache.royale.core.ILayoutView;
 	import org.apache.royale.core.IListPresentationModel;
-	import org.apache.royale.core.IListWithPresentationModel;
 	import org.apache.royale.core.IParentIUIBase;
-    import org.apache.royale.core.IScrollingViewport;
+	import org.apache.royale.core.IScrollingViewport;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.IStrand;
+	import org.apache.royale.core.IStrandWithPresentationModel;
 	import org.apache.royale.core.IUIBase;
-    import org.apache.royale.core.layout.EdgeData;
 	import org.apache.royale.core.LayoutBase;
 	import org.apache.royale.core.ValuesManager;
+	import org.apache.royale.core.layout.EdgeData;
 	COMPILE::JS
 	{
 		import org.apache.royale.core.WrappedHTMLElement;
@@ -46,6 +46,7 @@ package org.apache.royale.html.beads.layouts
 	import org.apache.royale.geom.Rectangle;
     import org.apache.royale.html.beads.VirtualListView;
 	import org.apache.royale.utils.CSSUtils;
+
     COMPILE::SWF {
         import org.apache.royale.geom.Size;
     }
@@ -113,6 +114,8 @@ package org.apache.royale.html.beads.layouts
 		 *  @productversion Royale 0.0
 		 *  @royaleignorecoercion org.apache.royale.core.ILayoutHost
 		 *  @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
+		 *  @royaleignorecoercion org.apache.royale.core.IListPresentationModel
+		 *  @royaleignorecoercion org.apache.royale.core.IStrandWithPresentationModel
 		 */
 		override public function layout():Boolean
 		{
@@ -131,7 +134,7 @@ package org.apache.royale.html.beads.layouts
 				var maxWidth:Number = 0;
 				var maxHeight:Number = 0;
                 var dp:Array = dataProviderModel.dataProvider as Array;
-                var presentationModel:IListPresentationModel = (host as IListWithPresentationModel).presentationModel;
+                var presentationModel:IListPresentationModel = (host as IStrandWithPresentationModel).presentationModel as IListPresentationModel;
 				var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
 				var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
 				var hostWidth:Number = host.width;
@@ -251,7 +254,7 @@ package org.apache.royale.html.beads.layouts
                 // going off-screen
                 var contentView:ILayoutView = layoutView;
                 var dp:Array = dataProviderModel.dataProvider as Array;
-                var presentationModel:IListPresentationModel = (host as IListWithPresentationModel).presentationModel;
+                var presentationModel:IListPresentationModel = (host as IStrandWithPresentationModel).presentationModel as IListPresentationModel;
                 var totalHeight:Number = presentationModel.rowHeight * dp.length;
                 var viewportTop:Number = Math.max(contentView.element.scrollTop, 0);
                 var viewportHeight:Number = contentView.element.clientHeight;
diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index a1061dd..6f25cd2 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -103,8 +103,9 @@ internal class CoreClasses
     import org.apache.royale.core.ISelectable; ISelectable;
     import org.apache.royale.core.ISelectionModel; ISelectionModel;
     import org.apache.royale.core.IStrand; IStrand;
-	import org.apache.royale.core.IStrandPrivate; IStrandPrivate;
+	import org.apache.royale.core.IContainerBaseStrandChildrenHost; IContainerBaseStrandChildrenHost;
     import org.apache.royale.core.IStrandWithModel; IStrandWithModel;
+    import org.apache.royale.core.IStrandWithModelView; IStrandWithModelView;
     import org.apache.royale.core.ITextModel; ITextModel;
     import org.apache.royale.core.ITitleBarModel; ITitleBarModel;
     import org.apache.royale.core.IToggleButtonModel; IToggleButtonModel;
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IStrandPrivate.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IContainerBaseStrandChildrenHost.as
similarity index 80%
rename from frameworks/projects/Core/src/main/royale/org/apache/royale/core/IStrandPrivate.as
rename to frameworks/projects/Core/src/main/royale/org/apache/royale/core/IContainerBaseStrandChildrenHost.as
index 21cb3d7..9fc29bf 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IStrandPrivate.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IContainerBaseStrandChildrenHost.as
@@ -19,15 +19,18 @@
 package org.apache.royale.core
 {
     /**
-     *  The IStrandPrivate interface is implemented by components that permit 
-	 *  access to their direct children.
+     *  The IContainerBaseStrandChildrenHost interface is implemented by 
+     *  components that use a ContainerBaseStrandChildren to proxy
+     *  addElement/removeElement calls to an internal child and
+     *  has the following APIs so the View can set up the "chrome" around
+     *  the internal child.
      *  
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.8
      */
-	public interface IStrandPrivate
+	public interface IContainerBaseStrandChildrenHost
 	{
 		function $numElements():int;
 		function $addElement(c:IChild, dispatchEvent:Boolean = true):void;
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererProvider.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererProvider.as
index 2e0384d..6ec6a0a 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererProvider.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererProvider.as
@@ -33,16 +33,6 @@ package org.apache.royale.core
      */
 	public interface IItemRendererProvider
 	{
-        /**
-         *  Returns whether or not the class has an itemRenderer set.
-         *  @return true if the itemRenderer has been set, false otherwise.
-         * 
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.0
-         */
-        function get hasItemRenderer():Boolean;
         
         /**
          * Returns the class factory that will generate instances of the itemRenderer.
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IListWithPresentationModel.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IStrandWithModelView.as
similarity index 62%
rename from frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IListWithPresentationModel.as
rename to frameworks/projects/Core/src/main/royale/org/apache/royale/core/IStrandWithModelView.as
index 3e24bfc..a2dc035 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IListWithPresentationModel.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IStrandWithModelView.as
@@ -18,29 +18,33 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.core
 {
-	import org.apache.royale.core.IListPresentationModel;
-
     /**
-     *  The IListWithPresentationModel interface is implemented by any IList
-	 *  that supports a separate IListPresentationModel
+     *  The IStrandWithModelView interface is the basic interface for a host component for
+     *  a set of plug-ins known as Beads where two of the plugins are a model and a view.
+     *  In Royale, the recommended pattern is to break out optional functionality
+     *  into small plug-ins that can be re-used in other components, or replaced with
+     *  different implementations optimized for different things such as size,
+     *  performance, advanced features, debugging, etc.
      * 
+     *  Beads are added to and removed from a Strand and can find and coordinate with
+     *  other beads on the strand.
+     *  
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-	public interface IListWithPresentationModel extends IList
+	public interface IStrandWithModelView extends IStrandWithModel
 	{
         /**
-         *  Returns the component within the list (maybe even the list shell itself)
-		 *  which will be the parent of each itemRenderer.
-         * 
+         *  Each Strand has an view object.
+         *  
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
          */
-		function get presentationModel():IListPresentationModel;
-		
+        function get view():IBeadView;
+        	
 	}
 }
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ItemRendererClassFactory.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ItemRendererClassFactory.as
index 1d44130..6031bc9 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ItemRendererClassFactory.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ItemRendererClassFactory.as
@@ -71,7 +71,7 @@ package org.apache.royale.core
         {
             _strand = value;
             
-            if (_strand is IItemRendererProvider && (_strand as IItemRendererProvider).hasItemRenderer) {
+            if (_strand is IItemRendererProvider && (_strand as IItemRendererProvider).itemRenderer) {
             	itemRendererFactory = (_strand as IItemRendererProvider).itemRenderer;
             	createFunction = createFromClass;
             }

-- 
To stop receiving notification emails like this one, please contact
aharui@apache.org.