You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2022/01/02 21:12:38 UTC

[royale-asjs] 02/03: jewel models

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

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

commit 1f6bbf16918b88950b576b9c4a4dc07fb232731f
Author: Harbs <ha...@in-tools.com>
AuthorDate: Sun Jan 2 22:32:07 2022 +0200

    jewel models
---
 .../beads/controllers/DateFieldMouseController.as  |  2 +-
 .../ListMultiSelectionMouseController.as           |  3 +-
 .../royale/express/beads/layouts/DataGridLayout.as |  3 +-
 .../beads/InspireTreeCheckBoxModeBead.as           | 14 ++--
 .../inspiretree/beads/InspireTreeIconBead.as       | 11 +++-
 .../inspiretree/beads/InspireTreePaginateBead.as   |  7 +-
 .../beads/InspireTreeReadOnlyCheckBead.as          | 16 +++--
 .../beads/InspireTreeRevertCheckBead.as            | 19 ++++--
 frameworks/projects/Flat/asconfig.json             |  7 +-
 .../beads/CSSContentAndTextToggleButtonView.as     |  3 +-
 .../apache/royale/flat/beads/CSSScrollBarView.as   |  4 +-
 .../apache/royale/flat/beads/DropDownListView.as   |  3 +-
 frameworks/projects/GoogleMaps/asconfig.json       |  4 +-
 .../org/apache/royale/maps/google/GoogleMap.as     | 13 ++--
 .../royale/maps/google/beads/GoogleMapView.as      | 76 ++++++++++++----------
 .../royale/org/apache/royale/jewel/ComboBox.as     |  3 +-
 .../org/apache/royale/jewel/DataContainer.as       |  3 +-
 .../royale/org/apache/royale/jewel/DataGrid.as     |  3 +-
 .../royale/org/apache/royale/jewel/DropDownList.as |  3 +-
 .../main/royale/org/apache/royale/jewel/TabBar.as  |  3 +-
 .../royale/org/apache/royale/jewel/WizardPage.as   |  2 +-
 .../jewel/beads/controllers/ComboBoxController.as  |  6 +-
 .../controllers/DateChooserMouseController.as      |  4 +-
 .../beads/controllers/DateFieldMouseController.as  |  7 +-
 .../beads/controllers/DropDownListController.as    |  4 +-
 .../beads/controllers/ListKeyDownController.as     |  3 +-
 .../beads/controllers/NumericStepperController.as  |  3 +-
 .../jewel/beads/controllers/SnackbarController.as  |  5 +-
 .../TableCellSelectionMouseController.as           |  3 +-
 .../beads/controllers/TableKeyDownController.as    |  3 +-
 .../controllers/VirtualListKeyDownController.as    |  3 +-
 .../jewel/beads/controllers/WizardController.as    |  2 +-
 .../beads/controls/DispatchChangeOnStartup.as      |  5 +-
 .../jewel/beads/controls/datagrid/DataGridSort.as  |  3 +-
 .../datechooser/DateChooserDateRangeRestriction.as |  3 +-
 .../datefield/SpanishDateComponentConfig.as        |  3 +-
 .../RemoveAllItemRendererForArrayListData.as       |  5 +-
 .../royale/jewel/beads/layouts/ButtonBarLayout.as  |  3 +-
 .../jewel/beads/layouts/DataGridColumnLayout.as    |  5 +-
 .../royale/jewel/beads/layouts/DataGridLayout.as   |  7 +-
 .../beads/layouts/VirtualListVerticalLayout.as     |  3 +-
 .../apache/royale/jewel/beads/views/ButtonView.as  |  3 +-
 .../royale/jewel/beads/views/CheckBoxView.as       |  5 +-
 .../royale/jewel/beads/views/ComboBoxPopUpView.as  |  3 +-
 .../royale/jewel/beads/views/ComboBoxView.as       |  5 +-
 .../royale/jewel/beads/views/DataGridView.as       |  1 -
 .../royale/jewel/beads/views/DateFieldView.as      |  3 +-
 .../royale/jewel/beads/views/DropDownListView.as   |  3 +-
 .../royale/jewel/beads/views/FormHeadingView.as    |  3 +-
 .../royale/jewel/beads/views/FormItemView.as       |  3 +-
 .../apache/royale/jewel/beads/views/ListView.as    |  5 +-
 .../royale/jewel/beads/views/NumericStepperView.as |  3 +-
 .../royale/jewel/beads/views/RadioButtonView.as    |  3 +-
 .../apache/royale/jewel/beads/views/SliderView.as  |  2 +-
 .../apache/royale/jewel/beads/views/SpinnerView.as |  3 +-
 .../royale/jewel/beads/views/VirtualListView.as    |  3 +-
 .../apache/royale/jewel/beads/views/WizardView.as  |  2 +-
 .../jewel/supportClasses/combobox/ComboBoxPopUp.as |  3 +-
 .../supportClasses/datagrid/DataGridColumnList.as  |  3 +-
 .../datagrid/VirtualDataGridColumnList.as          |  3 +-
 60 files changed, 215 insertions(+), 126 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 0cfafd0..df4d0a2 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -134,7 +134,7 @@ package org.apache.royale.html.beads.controllers
 			var viewBead:DateFieldView = _strand.getBeadByType(DateFieldView) as DateFieldView;
 			
 			var model:IDateChooserModel = getModelByType(_strand,IDateChooserModel) as IDateChooserModel;
-			model.selectedDate = IDateChooserModel(viewBead.popUp.getBeadByType(IDateChooserModel)).selectedDate;
+			model.selectedDate = (getModelByType(viewBead.popUp as IStrand,IDateChooserModel) as IDateChooserModel).selectedDate;
 
 			viewBead.popUpVisible = false;
 			sendStrandEvent(_strand,"change");
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
index 9ec6ef4..e6fb419 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
@@ -34,6 +34,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.utils.getSelectionRenderBead;
 	import org.apache.royale.utils.sendEvent;
 	import org.apache.royale.core.Bead;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The ListMultiSelectionMouseController class is a controller for
@@ -107,7 +108,7 @@ package org.apache.royale.html.beads.controllers
 		override public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			listModel = value.getBeadByType(IMultiSelectionModel) as IMultiSelectionModel;
+			listModel = getModelByType(value,IMultiSelectionModel) as IMultiSelectionModel;
 			listView = value.getBeadByType(IListView) as IListView;
 			listenOnStrand("itemAdded", handleItemAdded);
 			listenOnStrand("itemRemoved", handleItemRemoved);
diff --git a/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as b/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as
index 3d63125..c6109f3 100644
--- a/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as
+++ b/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as
@@ -36,6 +36,7 @@ package org.apache.royale.express.beads.layouts
 	import org.apache.royale.html.beads.IDrawingLayerBead;
 	import org.apache.royale.html.beads.models.ButtonBarModel;
 	import org.apache.royale.html.supportClasses.ScrollingViewport;
+	import org.apache.royale.html.util.getModelByType;
 	
 	/**
 	 * This DataGridLayout class sizes and positions all of the elements of the DataGrid
@@ -170,7 +171,7 @@ package org.apache.royale.express.beads.layouts
 				xpos += columnList.width;
 			}
 			
-			var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+			var bbmodel:ButtonBarModel = getModelByType(header,ButtonBarModel) as ButtonBarModel;
 			bbmodel.buttonWidths = columnWidths;
 			
 			header.x = borderMetrics.left;
diff --git a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeCheckBoxModeBead.as b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeCheckBoxModeBead.as
index 246ea95..de0045b 100644
--- a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeCheckBoxModeBead.as
+++ b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeCheckBoxModeBead.as
@@ -37,6 +37,8 @@ package org.apache.royale.externsjs.inspiretree.beads
     import org.apache.royale.core.StyledUIBase;
     import org.apache.royale.externsjs.inspiretree.vos.ItemTreeNode;
     import org.apache.royale.events.ValueEvent;
+    import org.apache.royale.core.IStrandWithModel;
+    import org.apache.royale.core.IStrandWithModel;
 	}
     COMPILE::JS
 	public class InspireTreeCheckBoxModeBead  extends Strand implements IBead
@@ -86,10 +88,13 @@ package org.apache.royale.externsjs.inspiretree.beads
 		}
 
 		private var _treeModel:InspireTreeModel;
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		private function get treeModel():InspireTreeModel{
 			if(_strand && !_treeModel)
 			{
-				_treeModel = _strand.getBeadByType(IBeadModel) as InspireTreeModel;
+				_treeModel = (_strand as IStrandWithModel).model as InspireTreeModel;
 			}
 			return _treeModel;
 		}
@@ -97,7 +102,6 @@ package org.apache.royale.externsjs.inspiretree.beads
 		private function init(event:Event):void
 		{
 			(_strand as IEventDispatcher).removeEventListener("initComplete", init);
-			//treeModel = _strand.getBeadByType(IBeadModel) as InspireTreeModel;
 			if(treeModel)
 			{
 				//treeModel.checkboxField = _checkboxField;
@@ -268,11 +272,13 @@ package org.apache.royale.externsjs.inspiretree.beads
 				fn_RevertSpecificNode(node.id, true);
 			}
 		}
-
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		public function fn_RevertSpecificNode(pNodeFilter:String, byID:Boolean):String
 		{
 			var idNodeParent:String;
-			var arOrg:Array = (_strand.getBeadByType(IBeadModel) as InspireTreeModel).dataProviderTree;
+			var arOrg:Array = ((_strand as IStrandWithModel).model as InspireTreeModel).dataProviderTree;
 			arOrg = completeTreeData(null,arOrg);
 			var lenar:int = arOrg.length;
 
diff --git a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeIconBead.as b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeIconBead.as
index 4f0a45b..66fa9fc 100644
--- a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeIconBead.as
+++ b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeIconBead.as
@@ -33,6 +33,7 @@ package org.apache.royale.externsjs.inspiretree.beads
     import org.apache.royale.events.IEventDispatcher;
     import org.apache.royale.core.IBeadModel;
     import org.apache.royale.externsjs.inspiretree.beads.models.InspireTreeModel;
+    import org.apache.royale.core.IStrandWithModel;
 
     COMPILE::JS
 	public class InspireTreeIconBead  extends Strand implements IBead
@@ -86,7 +87,7 @@ package org.apache.royale.externsjs.inspiretree.beads
 		{
 			(_strand as IEventDispatcher).removeEventListener("initComplete", init);
 
-			var treeModel:InspireTreeModel = (_strand.getBeadByType(IBeadModel) as InspireTreeModel);
+			var treeModel:InspireTreeModel = (_strand as IStrandWithModel).model as InspireTreeModel;
 			treeModel.addEventListener("checkboxModeChanged", updateHost);
 
 			setIcons(null);
@@ -279,14 +280,18 @@ package org.apache.royale.externsjs.inspiretree.beads
 		}
 
 		private var lastUID:String = "";
-
+		/**
+			 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+			 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+			 * @royaleignorecoercion org.apache.royale.externsjs.inspiretree.beads.models.InspireTreeModel
+		 */
 		private function updateHost( init:Boolean = false, propertyChange:String=""):void
 		{
 			if(!strand)
 				return;
 
 			//var hostelement:Element = (_strand as StyledUIBase).element;
-			var checkboxMode:Boolean =(_strand.getBeadByType(IBeadModel) as InspireTreeModel).checkboxMode;
+			var checkboxMode:Boolean =((_strand as IStrandWithModel).model as InspireTreeModel).checkboxMode;
             var existClasswithoutCB:Boolean = (_strand as IStyledUIBase).containsClass('withoutcheckbox') ? true : false;
 
             if(checkboxMode && existClasswithoutCB)
diff --git a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreePaginateBead.as b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreePaginateBead.as
index d1bcb26..a872764 100644
--- a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreePaginateBead.as
+++ b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreePaginateBead.as
@@ -34,6 +34,7 @@ package org.apache.royale.externsjs.inspiretree.beads
     import org.apache.royale.events.IEventDispatcher;
     import org.apache.royale.externsjs.inspiretree.beads.models.InspireTreeModel;
     import org.apache.royale.externsjs.inspiretree.IInspireTree;
+    import org.apache.royale.core.IStrandWithModel;
 	}
     COMPILE::JS
 	public class InspireTreePaginateBead  extends Strand implements IBead
@@ -81,10 +82,12 @@ package org.apache.royale.externsjs.inspiretree.beads
 		} 
 		
 		private var treeModel:InspireTreeModel;
-
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		private function init(event:Event):void
 		{
-			treeModel = _strand.getBeadByType(IBeadModel) as InspireTreeModel;
+			treeModel = (_strand as IStrandWithModel).model as InspireTreeModel;
 			if(treeModel)
 			{
 				treeModel.addEventListener("paginateChanged", updateHost);
diff --git a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeReadOnlyCheckBead.as b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeReadOnlyCheckBead.as
index 3b9ad43..964e67b 100644
--- a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeReadOnlyCheckBead.as
+++ b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeReadOnlyCheckBead.as
@@ -37,6 +37,8 @@ package org.apache.royale.externsjs.inspiretree.beads
     import org.apache.royale.events.ValueEvent;
     import org.apache.royale.events.Event;
     import org.apache.royale.core.IStyledUIBase;
+    import org.apache.royale.core.IStrandWithModel;
+    import org.apache.royale.core.IStrandWithModel;
 	}
     /**
      * Simulates the Read-Only state in checkboxes.
@@ -90,12 +92,14 @@ package org.apache.royale.externsjs.inspiretree.beads
             _strand = value;
 			(_strand as IEventDispatcher).addEventListener("initComplete", init);
 		}
-
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		private function init(event:Event):void
 		{
 			(_strand as IEventDispatcher).removeEventListener("initComplete", init);
 
-			var treeModel:InspireTreeModel = (_strand.getBeadByType(IBeadModel) as InspireTreeModel);
+			var treeModel:InspireTreeModel = ((_strand as IStrandWithModel).model as InspireTreeModel);
 			treeModel.addEventListener("checkboxModeChanged", updateHost);
 
 			updateHost();
@@ -126,8 +130,10 @@ package org.apache.royale.externsjs.inspiretree.beads
 					sendStrandEvent(_strand, new ValueEvent("readonlyChange", readOnly));
 				}
 			}
-        }
-
+		}
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		private function updateHost(event:Event = null):void
 		{
 			if(!strand)
@@ -139,7 +145,7 @@ package org.apache.royale.externsjs.inspiretree.beads
 
             initialized = true;
 
-            var checkboxMode:Boolean =(_strand.getBeadByType(IBeadModel) as InspireTreeModel).checkboxMode;
+            var checkboxMode:Boolean =((_strand as IStrandWithModel).model as InspireTreeModel).checkboxMode;
             if(!checkboxMode)
                 return;
 
diff --git a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeRevertCheckBead.as b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeRevertCheckBead.as
index 4480bf5..ce383c0 100644
--- a/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeRevertCheckBead.as
+++ b/frameworks/projects/ExternsJS/src/main/royale/org/apache/royale/externsjs/inspiretree/beads/InspireTreeRevertCheckBead.as
@@ -36,6 +36,9 @@ package org.apache.royale.externsjs.inspiretree.beads
     import org.apache.royale.externsjs.inspiretree.IInspireTree;
     import org.apache.royale.core.StyledUIBase;
     import org.apache.royale.externsjs.inspiretree.vos.ItemTreeNode;
+    import org.apache.royale.core.IStrandWithModel;
+    import org.apache.royale.core.IStrandWithModel;
+    import org.apache.royale.core.IStrandWithModel;
 	}
 	/**
 	 * Deprecate - Use the combined bead "InspireTreeIconBead" instead.
@@ -83,10 +86,12 @@ package org.apache.royale.externsjs.inspiretree.beads
             _strand = value;			
 			(_strand as IEventDispatcher).addEventListener("onBeforeCreation", init);
 		} 
-
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		private function init(event:Event):void
 		{
-			if( (_strand.getBeadByType(IBeadModel) as InspireTreeModel).checkboxMode == false && _revertIcon)
+			if( ((_strand as IStrandWithModel).model as InspireTreeModel).checkboxMode == false && _revertIcon)
 				revertIcon = false;
 
 			if(revertIcon)
@@ -100,11 +105,14 @@ package org.apache.royale.externsjs.inspiretree.beads
 
 		private var _revertIcon:Boolean = false;
 		public function get revertIcon():Boolean{ return _revertIcon; }
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		public function set revertIcon(value:Boolean):void
 		{ 
 			if(_revertIcon != value)
 			{
-				if(value && (_strand.getBeadByType(IBeadModel) as InspireTreeModel).checkboxMode == false)
+				if(value && ((_strand as IStrandWithModel).model as InspireTreeModel).checkboxMode == false)
 					return;
 				_revertIcon = value; 
 				updateHost();
@@ -136,10 +144,13 @@ package org.apache.royale.externsjs.inspiretree.beads
 			}
 		}
 		
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+		 */
 		public function fn_RevertSpecificNode(pNodeFilter:String, byID:Boolean):String
 		{ 	
 			var idNodeParent:String;
-			var arOrg:Array = (_strand.getBeadByType(IBeadModel) as InspireTreeModel).dataProviderTree;
+			var arOrg:Array = ((_strand as IStrandWithModel).model as InspireTreeModel).dataProviderTree;
 			var lenar:int = arOrg.length;
 
 			for (var idxnode:int=0; idxnode < lenar; idxnode++)
diff --git a/frameworks/projects/Flat/asconfig.json b/frameworks/projects/Flat/asconfig.json
index 629cc29..b84d873 100644
--- a/frameworks/projects/Flat/asconfig.json
+++ b/frameworks/projects/Flat/asconfig.json
@@ -1,8 +1,13 @@
 {
     "config": "royale",
+    "type": "lib",
     "compilerOptions": {
+        
         "debug": true,
-        "js-output-type": "royale",
+        "targets":[
+            "SWF",
+            "JSRoyale"
+        ],
         "define": [
             {
                 "name": "COMPILE::SWF",
diff --git a/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSContentAndTextToggleButtonView.as b/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSContentAndTextToggleButtonView.as
index abd49fd..8059847 100644
--- a/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSContentAndTextToggleButtonView.as
+++ b/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSContentAndTextToggleButtonView.as
@@ -34,6 +34,7 @@ package org.apache.royale.flat.beads
     import org.apache.royale.core.ValuesManager;
 	import org.apache.royale.events.Event;
     import org.apache.royale.utils.CSSUtils;
+	import org.apache.royale.html.util.getModelByType;
 	
     /**
      *  The CSSContentAndTextToggleButtonView class is the default view for
@@ -136,7 +137,7 @@ package org.apache.royale.flat.beads
                 s.addChild(tf);
             }
             
-			_toggleButtonModel = value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+			_toggleButtonModel = getModelByType(value,IToggleButtonModel) as IToggleButtonModel;
 			_toggleButtonModel.addEventListener("textChange", textChangeHandler);
 			_toggleButtonModel.addEventListener("htmlChange", htmlChangeHandler);
 			_toggleButtonModel.addEventListener("selectedChange", selectedChangeHandler);
diff --git a/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSScrollBarView.as b/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSScrollBarView.as
index 38bf980..dd34f14 100644
--- a/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSScrollBarView.as
+++ b/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/CSSScrollBarView.as
@@ -33,6 +33,7 @@ package org.apache.royale.flat.beads
 	import org.apache.royale.html.Button;
 	import org.apache.royale.html.beads.controllers.ButtonAutoRepeatController;
     import org.apache.royale.html.beads.IScrollBarView;
+	import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The ScrollBarView class is the default view for
@@ -103,8 +104,7 @@ package org.apache.royale.flat.beads
                 addBead(bead);
             
             var host:UIBase = UIBase(value);
-			sbModel = value.getBeadByType(IScrollBarModel) as IScrollBarModel;
-            sbModel = _strand.getBeadByType(IScrollBarModel) as IScrollBarModel;
+			sbModel = getModelByType(value,IScrollBarModel) as IScrollBarModel;
             sbModel.addEventListener("maximumChange", changeHandler);
             sbModel.addEventListener("minimumChange", changeHandler);
             sbModel.addEventListener("snapIntervalChange", changeHandler);
diff --git a/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/DropDownListView.as b/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/DropDownListView.as
index d970d28..223c8b5 100644
--- a/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/DropDownListView.as
+++ b/frameworks/projects/Flat/src/main/royale/org/apache/royale/flat/beads/DropDownListView.as
@@ -44,6 +44,7 @@ package org.apache.royale.flat.beads
 	import org.apache.royale.html.beads.IDropDownListView;
 	import org.apache.royale.utils.CSSUtils;
     import org.apache.royale.utils.UIUtils;
+	import org.apache.royale.html.util.getModelByType;
     
     /**
      *  The DropDownListView class is the default view for
@@ -129,7 +130,7 @@ package org.apache.royale.flat.beads
 			super.strand = value;
 
             var b:Button = Button(value);
-            selectionModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
+            selectionModel = getModelByType(value,ISelectionModel) as ISelectionModel;
             selectionModel.addEventListener("selectedIndexChanged", selectionChangeHandler);
             selectionModel.addEventListener("dataProviderChanged", selectionChangeHandler);
 			shape = new Shape();
diff --git a/frameworks/projects/GoogleMaps/asconfig.json b/frameworks/projects/GoogleMaps/asconfig.json
index 738ac3b..1720fe8 100644
--- a/frameworks/projects/GoogleMaps/asconfig.json
+++ b/frameworks/projects/GoogleMaps/asconfig.json
@@ -20,8 +20,8 @@
   "compilerOptions": {
       "debug": true,
       "targets": [
-          "SWF",
-          "JSRoyale"
+          "JSRoyale",
+          "SWF"
       ],
       "include-classes": [
           "GoogleMapsClasses",
diff --git a/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/GoogleMap.as b/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/GoogleMap.as
index 28da547..f68b8fd 100644
--- a/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/GoogleMap.as
+++ b/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/GoogleMap.as
@@ -58,12 +58,13 @@ package org.apache.royale.maps.google
 			super();
 
 			className = "Map";
-
-			var model:IBeadModel = getBeadByType(IBeadModel) as IBeadModel;
-			if (model == null) {
-				model = new MapModel();
-				addBead(model);
-			}
+			
+			this.model = new MapModel();
+			// var model:IBeadModel = getBeadByType(IBeadModel) as IBeadModel;
+			// if (model == null) {
+			// 	model = new MapModel();
+			// 	addBead(model);
+			// }
 		}
 
 		public function get token():String
diff --git a/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/beads/GoogleMapView.as b/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/beads/GoogleMapView.as
index 77fe7ab..1d0f00e 100644
--- a/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/beads/GoogleMapView.as
+++ b/frameworks/projects/GoogleMaps/src/main/royale/org/apache/royale/maps/google/beads/GoogleMapView.as
@@ -85,6 +85,7 @@ package org.apache.royale.maps.google.beads
 		private var service:PlacesService;
 
 		private var _strand:IStrand;
+		private var host:GoogleMap;
 
 		/**
 		 *  @copy org.apache.royale.core.IBead#strand
@@ -98,8 +99,9 @@ package org.apache.royale.maps.google.beads
 		{
 			super.strand = value;
 			_strand = value;
+			host = value as GoogleMap;
 
-			var token:String = (_strand as GoogleMap).token;
+			var token:String = host.token;
 			var src:String = 'https://maps.googleapis.com/maps/api/js?v=3.exp';
 			if (token)
 				src += '&key=' + token;
@@ -128,14 +130,14 @@ package org.apache.royale.maps.google.beads
 		public function mapit( centerLat:Number, centerLng:Number, zoom:Number ):void
 		{
 			if (!initialized) {
-				var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+				var model:MapModel = host.model as MapModel;
 				model.currentCenter = new LatLng(centerLat, centerLng);
 				model.zoom = zoom;
 				var mapOptions:Object = new Object();
 				mapOptions['center'] = model.currentCenter;
 				mapOptions['zoom'] = zoom;
 
-				realMap = new Map((_strand as UIBase).element, mapOptions);
+				realMap = new Map(host.element, mapOptions);
 				geocoder = null;
 
 			    model.addEventListener("zoomChanged", handleModelChange);
@@ -153,7 +155,7 @@ package org.apache.royale.maps.google.beads
 		{
 			mapit(37.333, -121.900, 12);
 			initialized = true;
-			IEventDispatcher(_strand).dispatchEvent(new Event('ready'));
+			host.dispatchEvent(new Event('ready'));
 		}
 
 		/**
@@ -180,7 +182,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function setCenter(location:LatLng):void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.currentCenter = new LatLng(location.lat(), location.lng());
 			realMap.setCenter(model.currentCenter);
 		}
@@ -195,7 +197,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function markCurrentLocation():void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			createMarker(model.currentCenter as LatLng);
 		}
 
@@ -245,7 +247,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function nearbySearch(placeName:String):void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 
 			if (markers == null) markers = [];
 			service = new PlacesService(realMap);
@@ -278,7 +280,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function centerChangeHandler() : void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.currentCenter = realMap.getCenter();
 
 			var newEvent:Event = new Event('centered');
@@ -290,7 +292,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function boundsChangeHandler():void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.currentCenter = realMap.getCenter();
 
 			var newEvent:Event = new Event('boundsChanged');
@@ -302,7 +304,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function zoomChangeHandler():void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.currentCenter = realMap.getCenter();
 
 			var newEvent:Event = new Event('zoomChanged');
@@ -314,7 +316,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function positionHandler(results:Array, status:String):void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			if (status == GeocoderStatus.OK) {
 				model.currentCenter = results[0].geometry.location;
 				realMap.setCenter(model.currentCenter);
@@ -329,7 +331,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		public function geocodeHandler(results:Array, status:String):void
 		{
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			if (status == GeocoderStatus.OK) {
 				model.currentCenter = results[0].geometry.location;
 				realMap.setCenter(model.currentCenter);
@@ -361,7 +363,7 @@ package org.apache.royale.maps.google.beads
 
 					markers.push(marker);
 				}
-				var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+				var model:MapModel = host.model as MapModel;
 				model.searchResults = searchResults;
 			}
 		}
@@ -376,7 +378,7 @@ package org.apache.royale.maps.google.beads
 		public function handleModelChange(event:Event):void
 		{
 			if (event.type == "zoomChanged") {
-				var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+				var model:MapModel = host.model as MapModel;
 				realMap.setZoom(model.zoom);
 			}
 		}
@@ -393,11 +395,11 @@ package org.apache.royale.maps.google.beads
 				map: realMap
 			});
 
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.selectedMarker = newMarker;
 
 			var newEvent:Event = new Event('markerClicked');
-			IEventDispatcher(_strand).dispatchEvent(newEvent);
+			host.dispatchEvent(newEvent);
 		}
 
 	} // end ::JS
@@ -427,6 +429,8 @@ package org.apache.royale.maps.google.beads
 		private var _loader:HTMLLoader;
 		private var page:String;
 
+		private var host:GoogleMap;
+
 		/**
 		 *  @copy org.apache.royale.core.IBead#strand
 		 *
@@ -438,24 +442,24 @@ package org.apache.royale.maps.google.beads
 		override public function set strand(value:IStrand):void
 		{
 			super.strand = value;
-
+			host = value as GoogleMap;
 			_loader = new HTMLLoader();
 			_loader.x = 0;
 			_loader.y = 0;
-			_loader.width = UIBase(value).width;
-			_loader.height = UIBase(value).height;
+			_loader.width = host.width;
+			_loader.height = host.height;
 			_loader.placeLoadStringContentInApplicationSandbox = false;
 
-			IEventDispatcher(_strand).addEventListener("widthChanged",handleSizeChange);
-			IEventDispatcher(_strand).addEventListener("heightChanged",handleSizeChange);
+			host.addEventListener("widthChanged",handleSizeChange);
+			host.addEventListener("heightChanged",handleSizeChange);
 
-			var model:IBeadModel = _strand.getBeadByType(IBeadModel) as IBeadModel;
+			var model:IBeadModel = host.model as IBeadModel;
 			model.addEventListener("zoomChanged", handleZoomChange);
 			model.addEventListener("currentLocationChanged", handleCurrentLocationChange);
 
-			(_strand as UIBase).addChild(_loader);
+			host.addChild(_loader);
 
-			var token:String = GoogleMap(_strand).token;
+			var token:String = host.token;
 			if (token)
 				page = pageTemplateStart + "&key=" + token + pageTemplateEnd;
 			else
@@ -490,13 +494,13 @@ package org.apache.royale.maps.google.beads
 				_loader.window.addEventListener("markerClicked",onMarkerClicked);
 			}
 
-			IEventDispatcher(_strand).dispatchEvent(new org.apache.royale.events.Event("ready"));
+			host.dispatchEvent(new org.apache.royale.events.Event("ready"));
 		}
 
 		private function handleZoomChange(event:org.apache.royale.events.Event):void
 		{
 			if (_loader && page) {
-				var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+				var model:MapModel = host.model as MapModel;
 				setZoom(model.zoom);
 			}
 		}
@@ -504,7 +508,7 @@ package org.apache.royale.maps.google.beads
 		private function handleCurrentLocationChange(event:org.apache.royale.events.Event):void
 		{
 			if (_loader && page) {
-				var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+				var model:MapModel = host.model as MapModel;
 				setCenter(model.currentCenter);
 			}
 		}
@@ -514,8 +518,8 @@ package org.apache.royale.maps.google.beads
 		 */
 		private function handleSizeChange(event:org.apache.royale.events.Event):void
 		{
-			_loader.width = UIBase(_strand).width;
-			_loader.height = UIBase(_strand).height;
+			_loader.width = host.width;
+			_loader.height = host.height;
 		}
 
 		/**
@@ -523,7 +527,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		private function onMapCentered():void
 		{
-			IEventDispatcher(_strand).dispatchEvent( new org.apache.royale.events.Event("centered") );
+			host.dispatchEvent( new org.apache.royale.events.Event("centered") );
 		}
 
 		/**
@@ -531,7 +535,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		private function onMapBoundsChanged():void
 		{
-			IEventDispatcher(_strand).dispatchEvent( new org.apache.royale.events.Event("boundsChanged") );
+			host.dispatchEvent( new org.apache.royale.events.Event("boundsChanged") );
 		}
 
 		/**
@@ -539,7 +543,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		private function onMapZoomChanged():void
 		{
-			IEventDispatcher(_strand).dispatchEvent( new org.apache.royale.events.Event("zoomChanged") );
+			host.dispatchEvent( new org.apache.royale.events.Event("zoomChanged") );
 		}
 
 		/**
@@ -547,7 +551,7 @@ package org.apache.royale.maps.google.beads
 		 */
 		private function onMapDragEnd():void
 		{
-			IEventDispatcher(_strand).dispatchEvent( new org.apache.royale.events.Event("dragEnd") );
+			host.dispatchEvent( new org.apache.royale.events.Event("dragEnd") );
 		}
 
 		/**
@@ -561,7 +565,7 @@ package org.apache.royale.maps.google.beads
 				results.push(place);
 			}
 
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.searchResults = results;
 		}
 
@@ -576,10 +580,10 @@ package org.apache.royale.maps.google.beads
 				map: event.marker.getMap()
 			});
 
-			var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+			var model:MapModel = host.model as MapModel;
 			model.selectedMarker = marker;
 
-			IEventDispatcher(_strand).dispatchEvent(new org.apache.royale.events.Event("markerClicked"));
+			host.dispatchEvent(new org.apache.royale.events.Event("markerClicked"));
 		}
 
 		/**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
index 66613ad..5f55bf6 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
@@ -27,6 +27,7 @@ package org.apache.royale.jewel
 	import org.apache.royale.jewel.beads.models.ComboBoxPresentationModel;
 	import org.apache.royale.jewel.supportClasses.combobox.IComboBoxPresentationModel;
 	import org.apache.royale.core.IHasLabelField;
+	import org.apache.royale.html.util.getModelByType;
 
 	//--------------------------------------
     //  Events
@@ -227,7 +228,7 @@ package org.apache.royale.jewel
 		 */
 		public function get presentationModel():IComboBoxPresentationModel
 		{
-			var presModel:IComboBoxPresentationModel = getBeadByType(IComboBoxPresentationModel) as IComboBoxPresentationModel;
+			var presModel:IComboBoxPresentationModel = getModelByType(this,IComboBoxPresentationModel) as IComboBoxPresentationModel;
 			if (presModel == null) {
 				presModel = new ComboBoxPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as
index 7220dc5..95313bc 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as
@@ -25,6 +25,7 @@ package org.apache.royale.jewel
 	import org.apache.royale.jewel.supportClasses.container.DataContainerBase;
 	import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
 	import org.apache.royale.core.IHasLabelField;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 * The default property uses when additional MXML content appears within an element's
@@ -134,7 +135,7 @@ package org.apache.royale.jewel
 		 */
 		public function get presentationModel():IBead
 		{
-			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
+			var presModel:IListPresentationModel = getModelByType(this,IListPresentationModel) as IListPresentationModel;
 			if (presModel == null) {
 				presModel = new ListPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
index 6de8f67..3a5348f 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
@@ -27,6 +27,7 @@ package org.apache.royale.jewel
 	import org.apache.royale.core.ValuesManager;
 	import org.apache.royale.jewel.beads.models.DataGridPresentationModel;
 	import org.apache.royale.jewel.supportClasses.datagrid.IDataGridPresentationModel;
+	import org.apache.royale.html.util.getModelByType;
 	
 	/**
 	 *  The change event is dispatched whenever the datagrid's selection changes.
@@ -220,7 +221,7 @@ package org.apache.royale.jewel
 		 */
 		public function get presentationModel():IBead
 		{
-			var presModel:IDataGridPresentationModel = getBeadByType(IDataGridPresentationModel) as IDataGridPresentationModel;
+			var presModel:IDataGridPresentationModel = getModelByType(this,IDataGridPresentationModel) as IDataGridPresentationModel;
 			if (presModel == null) {
 				presModel = new DataGridPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as
index bf960da..e8ead86 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DropDownList.as
@@ -33,6 +33,7 @@ package org.apache.royale.jewel
     import org.apache.royale.jewel.supportClasses.container.DataContainerBase;
     import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
     import org.apache.royale.core.IHasLabelField;
+    import org.apache.royale.html.util.getModelByType;
 
 
     //--------------------------------------
@@ -224,7 +225,7 @@ package org.apache.royale.jewel
 		 */
 		public function get presentationModel():IListPresentationModel
 		{
-			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
+			var presModel:IListPresentationModel = getModelByType(this,IListPresentationModel) as IListPresentationModel;
 			if (presModel == null) {
 				presModel = new ListPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as
index 63926fa..b95316d 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as
@@ -23,6 +23,7 @@ package org.apache.royale.jewel
 	import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.jewel.beads.models.TabBarPresentationModel;
 	import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The TabBar class is a List used for navigate other organized content
@@ -92,7 +93,7 @@ package org.apache.royale.jewel
 		 */
 		override public function get presentationModel():IBead
 		{
-			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
+			var presModel:IListPresentationModel = getModelByType(this,IListPresentationModel) as IListPresentationModel;
 			if (presModel == null) {
 				presModel = new TabBarPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
index 4770822..906f219 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
@@ -157,7 +157,7 @@ package org.apache.royale.jewel
 		public function addWizardListeners(wizard:Wizard):void
 		{
 			this.wizard = wizard;
-			model = wizard.getBeadByType(WizardModel) as WizardModel;
+			model = wizard.model as WizardModel;
 			if(model.activateEffect)
 			{
 				addClass("transitions");
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as
index ffac21f..e888f43 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ComboBoxController.as
@@ -45,6 +45,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
 	import org.apache.royale.jewel.beads.views.ComboBoxPopUpView;
 	import org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp;
+	import org.apache.royale.core.IStrandWithModel;
 
 	/**
 	 *  The ComboBoxController class is responsible for listening to
@@ -84,11 +85,12 @@ package org.apache.royale.jewel.beads.controllers
 		 *  @productversion Royale 0.9.4
          *  @royaleignorecoercion org.apache.royale.jewel.beads.controls.combobox.IComboBoxView
          *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+         *  @royaleignorecoercion org.apache.royale.core.IStrandWithModel
 		 */
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			model = _strand.getBeadByType(IComboBoxModel) as IComboBoxModel;
+			model = (_strand as IStrandWithModel).model as IComboBoxModel;
 			viewBead = _strand.getBeadByType(IComboBoxView) as IComboBoxView;
 			if (viewBead) {
 				finishSetup();
@@ -266,7 +268,7 @@ package org.apache.royale.jewel.beads.controllers
 		private function changeHandler(event:Event):void
 		{
 			event.stopImmediatePropagation();
-			model.selectedItem = IComboBoxModel(list.getBeadByType(IComboBoxModel)).selectedItem;
+			model.selectedItem = (list.model as IComboBoxModel).selectedItem;
 			IEventDispatcher(_strand).dispatchEvent(new Event(Event.CHANGE));
 		}
 		
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
index 36e9fcb..c078364 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
@@ -27,6 +27,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.beads.models.DateChooserModel;
 	import org.apache.royale.jewel.beads.views.DateChooserView;
 	import org.apache.royale.jewel.supportClasses.datechooser.DateChooserTable;
+	import org.apache.royale.core.IStrandWithModel;
 	
 	/**
 	 *  The DateChooserMouseController class is responsible for listening to
@@ -63,12 +64,13 @@ package org.apache.royale.jewel.beads.controllers
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.4
+			* @royaleignorecoercion org.apache.royale.core.IStrandWithModel
 		 */
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
 			
-            model = _strand.getBeadByType(IBeadModel) as DateChooserModel;
+            model = (_strand as IStrandWithModel).model as DateChooserModel;
 			                   
             var view:DateChooserView = value.getBeadByType(IBeadView) as DateChooserView;
 			view.previousButton.addEventListener(MouseEvent.CLICK, previousButtonClickHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateFieldMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateFieldMouseController.as
index 88a3d8f..f1e1f1a 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateFieldMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateFieldMouseController.as
@@ -31,6 +31,8 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.beads.models.DateChooserModel;
 	import org.apache.royale.jewel.beads.views.DateChooserView;
 	import org.apache.royale.jewel.beads.views.DateFieldView;
+	import org.apache.royale.core.IStrandWithModel;
+	import org.apache.royale.html.util.getModelByType;
 	
 	/**
 	 * The DateFieldMouseController class is responsible for monitoring
@@ -69,12 +71,13 @@ package org.apache.royale.jewel.beads.controllers
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.4
+		 *  @royaleignorecoercion org.apache.royale.core.IStrandWithModel
 		 */
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
 			
-			model = _strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+			model = (_strand as IStrandWithModel).model as IDateChooserModel;
 
 			viewBead = _strand.getBeadByType(DateFieldView) as DateFieldView;			
 			IEventDispatcher(viewBead.menuButton).addEventListener(MouseEvent.CLICK, clickHandler);
@@ -129,7 +132,7 @@ package org.apache.royale.jewel.beads.controllers
 			IUIBase(viewBead.popUp).removeEventListener(MouseEvent.MOUSE_DOWN, removePopUpWhenClickOutside);
 			IEventDispatcher(viewBead.popUp).removeEventListener(Event.CHANGE, changeHandler);
             
-			model.selectedDate = IDateChooserModel(viewBead.popUp.getBeadByType(IDateChooserModel)).selectedDate;
+			model.selectedDate = (getModelByType(viewBead.popUp as IStrand,IDateChooserModel) as IDateChooserModel).selectedDate;
 
 			viewBead.popUpVisible = false;
 			IEventDispatcher(_strand).dispatchEvent(new Event(Event.CHANGE));
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DropDownListController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DropDownListController.as
index 8c04456..455fc98 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DropDownListController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DropDownListController.as
@@ -31,6 +31,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.beads.models.DropDownListModel;
 	import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
 	import org.apache.royale.jewel.beads.views.DropDownListView;
+	import org.apache.royale.core.IStrandWithModel;
 
     /**
      *  The DropDownListController class is the controller for
@@ -89,11 +90,12 @@ package org.apache.royale.jewel.beads.controllers
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.9.4
          *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+        * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
          */
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-            model = value.getBeadByType(DropDownListModel) as DropDownListModel;
+            model = (value as IStrandWithModel).model as DropDownListModel;
             IEventDispatcher(_strand).addEventListener("itemAdded", handleItemAdded);
 			IEventDispatcher(_strand).addEventListener("itemRemoved", handleItemRemoved);
             if (model is IJewelSelectionModel) {
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListKeyDownController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListKeyDownController.as
index f16b600..1d9c383 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListKeyDownController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListKeyDownController.as
@@ -32,6 +32,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.beads.views.IScrollToIndexView;
 	import org.apache.royale.jewel.supportClasses.textinput.ITextInput;
 	import org.apache.royale.utils.sendEvent;
+	import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The Jewel ListSingleSelectionMouseController class is a controller for
@@ -100,7 +101,7 @@ package org.apache.royale.jewel.beads.controllers
 		override public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			listModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
+			listModel = getModelByType(value,ISelectionModel) as ISelectionModel;
 			listView = value.getBeadByType(IListView) as IListView;
 
             listenOnStrand(KeyboardEvent.KEY_DOWN, keyDownEventHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/NumericStepperController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/NumericStepperController.as
index 8be3e65..9a8d1bd 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/NumericStepperController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/NumericStepperController.as
@@ -29,6 +29,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.TextInput;
 	import org.apache.royale.jewel.beads.views.NumericStepperView;
 	import org.apache.royale.utils.sendStrandEvent;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The NumericStepperController class is responsible for listening to
@@ -103,7 +104,7 @@ package org.apache.royale.jewel.beads.controllers
 			// as resizing the component
 			spinner.addEventListener("valueChange", spinnerValueChanged);
 			
-			var model:IRangeModel = _strand.getBeadByType(IRangeModel) as IRangeModel;
+			var model:IRangeModel = getModelByType(_strand,IRangeModel) as IRangeModel;
 
 			// listen for changes and update the UI accordingly
 			model.addEventListener("valueChange", modelChangeHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SnackbarController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SnackbarController.as
index dfbfb9e..c204e51 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SnackbarController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SnackbarController.as
@@ -24,6 +24,7 @@ package org.apache.royale.jewel.beads.controllers
     import org.apache.royale.jewel.Snackbar;
     import org.apache.royale.jewel.beads.models.SnackbarModel;
     import org.apache.royale.utils.Timer;
+    import org.apache.royale.html.util.getModelByType;
 
     /**
 	 *  The SnackbarController class bead handles duration of the Snackbar
@@ -83,7 +84,7 @@ package org.apache.royale.jewel.beads.controllers
                 // start the timer for dismiss
                 durationChangeHandler(null);
 
-                var model:SnackbarModel = _strand.getBeadByType(SnackbarModel) as SnackbarModel;
+                var model:SnackbarModel = getModelByType(_strand,SnackbarModel) as SnackbarModel;
                 model.addEventListener("durationChange", durationChangeHandler);
             }
 		}
@@ -113,7 +114,7 @@ package org.apache.royale.jewel.beads.controllers
 				_timer.reset();
 			}
 
-            var model:SnackbarModel = _strand.getBeadByType(SnackbarModel) as SnackbarModel;
+            var model:SnackbarModel = getModelByType(_strand,SnackbarModel) as SnackbarModel;
             if (model.duration < 0) {
                 timerHandler(null);
 			} else if (model.duration > 0) {
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
index 1ebc4d3..e49437e 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
@@ -33,6 +33,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.html.beads.ITableView;
 	import org.apache.royale.html.supportClasses.StyledDataItemRenderer;
 	import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
+	import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The TableCellSelectionMouseController class is a controller for
@@ -110,7 +111,7 @@ package org.apache.royale.jewel.beads.controllers
 		{
 			_strand = value;
 
-			model = value.getBeadByType(ITableModel) as ITableModel;
+			model = getModelByType(value,ITableModel) as ITableModel;
 			view = value.getBeadByType(IBeadView) as ITableView;
 			IEventDispatcher(_strand).addEventListener("itemAdded", handleItemAdded);
 			IEventDispatcher(_strand).addEventListener("itemRemoved", handleItemRemoved);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as
index d78ed69..0fc5958 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as
@@ -29,6 +29,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.events.KeyboardEvent;
 	import org.apache.royale.events.utils.WhitespaceKeys;
 	import org.apache.royale.html.beads.ITableView;
+	import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The Jewel TableKeyDownController class is a key controller for
@@ -90,7 +91,7 @@ package org.apache.royale.jewel.beads.controllers
 		override public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			tableModel = value.getBeadByType(ISelectionModel) as ITableModel;
+			tableModel = getModelByType(value,ISelectionModel) as ITableModel;
 			tableView = value.getBeadByType(IBeadView) as ITableView;
 
             listenOnStrand(KeyboardEvent.KEY_DOWN, keyDownEventHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/VirtualListKeyDownController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/VirtualListKeyDownController.as
index 6919638..3a097cd 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/VirtualListKeyDownController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/VirtualListKeyDownController.as
@@ -30,6 +30,7 @@ package org.apache.royale.jewel.beads.controllers
 	import org.apache.royale.jewel.beads.views.IScrollToIndexView;
 	import org.apache.royale.utils.sendEvent;
 	import org.apache.royale.events.utils.WhitespaceKeys;
+	import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The Jewel ListSingleSelectionMouseController class is a controller for
@@ -98,7 +99,7 @@ package org.apache.royale.jewel.beads.controllers
 		override public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			listModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
+			listModel = getModelByType(value,ISelectionModel) as ISelectionModel;
 			listView = value.getBeadByType(IListView) as IListView;
 
             listenOnStrand(KeyboardEvent.KEY_DOWN, keyDownEventHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
index a4c834d..1102713 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
@@ -82,7 +82,7 @@ package org.apache.royale.jewel.beads.controllers
 			wizard = value as Wizard;
             wizard.addEventListener("initComplete", finishSetUp);
             
-            model = wizard.getBeadByType(WizardModel) as WizardModel;
+            model = wizard.model as WizardModel;
             model.addEventListener("currentStepChange", handleStepChange);
             
             view = wizard.getBeadByType(WizardView) as WizardView;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as
index 94529e4..40cdd11 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/DispatchChangeOnStartup.as
@@ -23,6 +23,7 @@ package org.apache.royale.jewel.beads.controls
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.core.ISelectionModel;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The DispatchChangeOnStartup bead class is a specialty bead that can be used
@@ -79,14 +80,14 @@ package org.apache.royale.jewel.beads.controls
 		private function listenToModel(event:Event):void
 		{
 			IEventDispatcher(_strand).removeEventListener('beadsAdded', listenToModel);
-			const model:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			const model:ISelectionModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			if (model) {
 				IEventDispatcher(model).addEventListener('selectionChanged', onChange);
 			}
 		}
 
 		private function onChange(event:Event):void{
-			const model:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			const model:ISelectionModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			IEventDispatcher(model).removeEventListener('selectionChanged', onChange);
 			IEventDispatcher(_strand).dispatchEvent(new Event('change'));
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
index 1e349ee..a59ca1b 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
@@ -32,6 +32,7 @@ package org.apache.royale.jewel.beads.controls.datagrid
 	import org.apache.royale.html.beads.EasyDataProviderChangeNotifier;
 	import org.apache.royale.jewel.beads.views.DataGridView;
 	import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The DataGridSort bead class is a specialty bead that can be use with a Jewel DataGrid control
@@ -112,7 +113,7 @@ package org.apache.royale.jewel.beads.controls.datagrid
 		{
 			if(event.type == CollectionEvent.COLLECTION_CHANGED)
 			{
-				var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+				var selectionModel:ISelectionModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 				selectionModel.dispatchEvent(event.cloneEvent() as Event);
 			} else
 			{
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
index 7036ddc..67756a0 100755
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
@@ -31,6 +31,7 @@ package org.apache.royale.jewel.beads.controls.datechooser
 	import org.apache.royale.jewel.supportClasses.table.TBodyContentArea;
 	import org.apache.royale.jewel.supportClasses.table.TableCell;
 	import org.apache.royale.jewel.supportClasses.table.TableRow;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  Disable dates which are outside restriction provided by minDate and maxDate properties
@@ -134,7 +135,7 @@ package org.apache.royale.jewel.beads.controls.datechooser
 
 		public function setUpBead():void
 		{
-			model = _strand.getBeadByType(DateChooserModel) as DateChooserModel;
+			model = getModelByType(_strand,DateChooserModel) as DateChooserModel;
 
 			view = _strand.getBeadByType(DateChooserView) as DateChooserView;
 			view.previousButton.addEventListener(MouseEvent.CLICK, refreshDateRange);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/SpanishDateComponentConfig.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/SpanishDateComponentConfig.as
index e6b16ee..5bbda2b 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/SpanishDateComponentConfig.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/SpanishDateComponentConfig.as
@@ -22,6 +22,7 @@ package org.apache.royale.jewel.beads.controls.datefield
     import org.apache.royale.core.IStrand;
     import org.apache.royale.jewel.DateField;
     import org.apache.royale.jewel.beads.models.DateChooserModel;
+    import org.apache.royale.html.util.getModelByType;
 
     /**
 	 *  The SpanishDateFieldConfig class is a specialty bead that is used
@@ -62,7 +63,7 @@ package org.apache.royale.jewel.beads.controls.datefield
 		{
 			_strand = value;
 			
-			var model:DateChooserModel = _strand.getBeadByType(DateChooserModel) as DateChooserModel;
+			var model:DateChooserModel = getModelByType(_strand,DateChooserModel) as DateChooserModel;
             model.dayNames = ['D', 'L', 'M', 'X', 'J', 'V', 'S'];
             model.monthNames = ["ENE", "FEB", "MAR", "ABR", "MAY", "JUN", "JUL", "AGO", "SEP", "OCT", "NOV", "DIC"];
             model.firstDayOfWeek = 1;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveAllItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveAllItemRendererForArrayListData.as
index e325f51..8e3a230 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveAllItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveAllItemRendererForArrayListData.as
@@ -28,6 +28,7 @@ package org.apache.royale.jewel.beads.itemRenderers
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.html.beads.IListView;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  Handles the removal of all itemRenderers.
@@ -91,7 +92,7 @@ package org.apache.royale.jewel.beads.itemRenderers
 		{
 			IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
 			
-			_dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			_dataProviderModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);	
 			
 			// invoke now in case "dataProviderChanged" has already been dispatched.
@@ -151,7 +152,7 @@ package org.apache.royale.jewel.beads.itemRenderers
 		public function get dataProviderModel(): IDataProviderModel
 		{
 			if (_dataProviderModel == null) {
-				_dataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+				_dataProviderModel = getModelByType(_strand,IDataProviderModel) as IDataProviderModel;
 			}
 			return _dataProviderModel;
 		}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/ButtonBarLayout.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/ButtonBarLayout.as
index 9c71f62..64d1a36 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/ButtonBarLayout.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/ButtonBarLayout.as
@@ -24,6 +24,7 @@ package org.apache.royale.jewel.beads.layouts
 	import org.apache.royale.core.IStyleableObject;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.jewel.beads.models.ButtonBarModel;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The Jewel ButtonBarLayout class bead sizes and positions the button
@@ -73,7 +74,7 @@ package org.apache.royale.jewel.beads.layouts
 		{
 			super.beadsAddedHandler();
 
-			model = (host as IStrand).getBeadByType(ButtonBarModel) as ButtonBarModel;
+			model = getModelByType(_strand,ButtonBarModel) as ButtonBarModel;
 			if (model) {
 				widthType = model.buttonWidths != null ? model.widthType : NaN;
 			}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridColumnLayout.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridColumnLayout.as
index 2d76631..4134858 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridColumnLayout.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridColumnLayout.as
@@ -29,6 +29,7 @@ package org.apache.royale.jewel.beads.layouts
 	import org.apache.royale.html.beads.IDataGridView;
 	import org.apache.royale.jewel.beads.models.ButtonBarModel;
 	import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnWidth;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The Jewel ButtonBarLayout class bead sizes and positions the button
@@ -80,7 +81,7 @@ package org.apache.royale.jewel.beads.layouts
 		{
 			super.beadsAddedHandler();
 
-			model = (host as IStrand).getBeadByType(ButtonBarModel) as ButtonBarModel;
+			model = getModelByType(_strand,ButtonBarModel) as ButtonBarModel;
 			hostComponent.addEventListener("headerLayout", onHeaderLayoutCheck);
 			hostComponent.addEventListener("headerLayoutReset", onHeaderLayoutCheck);
 		}
@@ -90,7 +91,7 @@ package org.apache.royale.jewel.beads.layouts
 		 */
 		protected function get datagrid():UIBase
 		{
-			return (_strand as UIBase).parent as UIBase;
+			return host.parent as UIBase;
 		}
 
 		COMPILE::JS
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as
index 79fbd92..c52790f 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as
@@ -32,6 +32,7 @@ package org.apache.royale.jewel.beads.layouts
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridWidthDenominator;
     import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
     import org.apache.royale.jewel.supportClasses.datagrid.IDataGridPresentationModel;
+    import org.apache.royale.html.util.getModelByType;
 	
 	/**
 	 * DataGridLayout is a class that handles the size and positioning of the
@@ -97,7 +98,7 @@ package org.apache.royale.jewel.beads.layouts
 		{
 			var view:IDataGridView = datagrid.view as IDataGridView
 			var header:IUIBase = view.header;
-			var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+			var bbmodel:ButtonBarModel = getModelByType(header,ButtonBarModel) as ButtonBarModel;
 			bbmodel.buttonWidths = null;
 			header.dispatchEvent(new Event('headerLayoutReset'));
 			layout();
@@ -146,12 +147,12 @@ package org.apache.royale.jewel.beads.layouts
 			}
 
 			var view:IDataGridView = datagrid.view as IDataGridView
-			var presentationModel:IDataGridPresentationModel = datagrid.getBeadByType(IDataGridPresentationModel) as IDataGridPresentationModel;
+			var presentationModel:IDataGridPresentationModel = getModelByType(datagrid,IDataGridPresentationModel) as IDataGridPresentationModel;
 			var header:IUIBase = view.header;
             // fancier DG's will filter invisible columns and only put visible columns
             // in the bbmodel, so do all layout based on the bbmodel, not the set
             // of columns that may contain invisible columns
-            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            var bbmodel:ButtonBarModel = getModelByType(header,ButtonBarModel) as ButtonBarModel;
 			bbmodel.dataProvider.source = model.columns;
             var bblayout:DataGridColumnLayout = header.getBeadByType(DataGridColumnLayout) as DataGridColumnLayout;
 			var listArea:IUIBase = view.listArea;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VirtualListVerticalLayout.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VirtualListVerticalLayout.as
index 5c586b8..a544d93 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VirtualListVerticalLayout.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/VirtualListVerticalLayout.as
@@ -39,6 +39,7 @@ package org.apache.royale.jewel.beads.layouts
 	import org.apache.royale.core.IStrand;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
+	import org.apache.royale.html.util.getModelByType;
         
 	/**
 	 *  The VirtualListVerticalLayout class is used for Jewel List that wants to use VirtualListView
@@ -70,7 +71,7 @@ package org.apache.royale.jewel.beads.layouts
         override public function set strand(value:IStrand):void
         {
             super.strand = value;
-            dataProviderModel = host.getBeadByType(IDataProviderModel) as IDataProviderModel;
+            dataProviderModel = getModelByType(value,IDataProviderModel) as IDataProviderModel;
             dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
 
             COMPILE::JS
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ButtonView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ButtonView.as
index 332aa2e..691c108 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ButtonView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ButtonView.as
@@ -43,6 +43,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.utils.CSSUtils;
     import org.apache.royale.utils.SolidBorderUtil;
     import org.apache.royale.utils.StringTrimmer;
+    import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The ButtonView class is the default view for
@@ -104,7 +105,7 @@ package org.apache.royale.jewel.beads.views
 		override public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			textModel = value.getBeadByType(ITextModel) as ITextModel;
+			textModel = getModelByType(value,ITextModel) as ITextModel;
 			textModel.addEventListener("textChange", textChangeHandler);
 			textModel.addEventListener("htmlChange", htmlChangeHandler);
 			shape = new Shape();
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
index 6df6d9f..8d6469d 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/CheckBoxView.as
@@ -40,6 +40,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.core.UIBase;
     import org.apache.royale.jewel.CheckBox;
     import org.apache.royale.utils.css.addDynamicSelector;
+    import org.apache.royale.html.util.getModelByType;
 	
     /**
      *  The CheckBoxView class is the default view for SWF platform
@@ -144,10 +145,10 @@ package org.apache.royale.jewel.beads.views
 			// always run size change since there are no size change events
 			sizeChangeHandler(null);
 			}
-            
+
 			COMPILE::SWF
 			{
-			_toggleButtonModel = value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+			_toggleButtonModel = getModelByType(value,IToggleButtonModel) as IToggleButtonModel;
 			_toggleButtonModel.addEventListener("textChange", textChangeHandler);
 			_toggleButtonModel.addEventListener("htmlChange", htmlChangeHandler);
 			_toggleButtonModel.addEventListener("selectedChange", selectedChangeHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxPopUpView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxPopUpView.as
index 5bdad96..6496502 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxPopUpView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxPopUpView.as
@@ -31,6 +31,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp;
     import org.apache.royale.jewel.supportClasses.combobox.IComboBoxPresentationModel;
     import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
+    import org.apache.royale.html.util.getModelByType;
     
     /**
 	 * The ComboBoxPopUpView class is a view bead for the ComboBoxPopUp.
@@ -72,7 +73,7 @@ package org.apache.royale.jewel.beads.views
             _strand = value;
 
             // set model
-            var model:IDataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+            var model:IDataProviderModel = getModelByType(_strand,IDataProviderModel) as IDataProviderModel;
             list.model = model;
 
             // set rowHeight
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as
index 3d71c88..2d8f402 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ComboBoxView.as
@@ -44,6 +44,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp;
 	import org.apache.royale.utils.UIUtils;
 	import org.apache.royale.utils.sendStrandEvent;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The ComboBoxView class creates the visual elements of the org.apache.royale.jewel.ComboBox
@@ -140,7 +141,7 @@ package org.apache.royale.jewel.beads.views
 			parent.addElement(_textinput);
 			parent.addElement(_button);
 
-			model = host.getBeadByType(IComboBoxModel) as IComboBoxModel;
+			model = getModelByType(value,IComboBoxModel) as IComboBoxModel;
 
 			if (model is IJewelSelectionModel) {
 				//do this here as well as in the controller,
@@ -275,7 +276,7 @@ package org.apache.royale.jewel.beads.views
 		 */
 		protected function itemChangeAction(event:Event = null):void
 		{
-			var model:IComboBoxModel = host.getBeadByType(IComboBoxModel) as IComboBoxModel;
+			var model:IComboBoxModel = getModelByType(_strand,IComboBoxModel) as IComboBoxModel;
 			_textinput.text = getLabelFromData(model, model.selectedItem);
 		}
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
index 1591ec4..f959c4e 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
@@ -261,7 +261,6 @@ package org.apache.royale.jewel.beads.views
         protected function configureColumnListPresentationModel(event:Event):void
         {
             var list:IDataGridColumnList = event.target as IDataGridColumnList;
-            //var pm:DataGridColumnListPresentationModel = list.getBeadByType(IListPresentationModel) as DataGridColumnListPresentationModel; --> this line doesn't work
             var pm:DataGridColumnListPresentationModel = list.presentationModel as DataGridColumnListPresentationModel;
             pm.rowHeight = _presentationModel.rowHeight;
             pm.variableRowHeight = false;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
index 7831c2c..0fe9cfd 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
@@ -50,6 +50,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.jewel.beads.views.DateChooserView;
 	import org.apache.royale.utils.UIUtils;
 	import org.apache.royale.utils.sendStrandEvent;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 * The DateFieldView class is a bead for DateField that creates the
@@ -184,7 +185,7 @@ package org.apache.royale.jewel.beads.views
 		 */
 		protected function handleInitComplete(event:Event):void
 		{
-			model = _strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+			model = getModelByType(_strand,IDateChooserModel) as IDateChooserModel;
 			IEventDispatcher(model).addEventListener("selectedDateChanged", selectionChangeHandler);
 			var mask:DateFieldMaskedTextInput = new DateFieldMaskedTextInput();
 			_textInput.addBead(mask);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DropDownListView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DropDownListView.as
index cf10f46..03dde29 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DropDownListView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DropDownListView.as
@@ -30,6 +30,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.jewel.DropDownList;
 	import org.apache.royale.jewel.beads.models.IDropDownListModel;
 	import org.apache.royale.utils.getSelectionRenderBead;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The DropDownListView class creates the visual elements of the org.apache.royale.jewel.DropDownList
@@ -85,7 +86,7 @@ package org.apache.royale.jewel.beads.views
 				dropDownList.addElement(dropDownList.dropDown);
 			}
 
-			model = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			model = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			model.addEventListener("selectionChanged", selectionChangeHandler);
 
 			super.handleInitComplete(event);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormHeadingView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormHeadingView.as
index da79e42..3c7aa4c 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormHeadingView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormHeadingView.as
@@ -25,6 +25,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.html.beads.GroupView;
     import org.apache.royale.jewel.FormHeading;
     import org.apache.royale.jewel.Label;
+    import org.apache.royale.html.util.getModelByType;
 
     /**
 	 *  The FormHeadingView class creates the visual elements of the org.apache.royale.jewel.FormHeading
@@ -86,7 +87,7 @@ package org.apache.royale.jewel.beads.views
 
             formHeading = value as FormHeading;
 
-            model = _strand.getBeadByType(ITextModel) as ITextModel;
+            model = getModelByType(_strand,ITextModel) as ITextModel;
 			model.addEventListener("textChange", textChangeHandler);
 			model.addEventListener("htmlChange", textChangeHandler);
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormItemView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormItemView.as
index f4e1337..9c3714f 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormItemView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/FormItemView.as
@@ -38,6 +38,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.jewel.beads.models.FormItemModel;
     import org.apache.royale.jewel.supportClasses.LayoutProxy;
     import org.apache.royale.jewel.HGroup;
+    import org.apache.royale.html.util.getModelByType;
 
 
     /**
@@ -120,7 +121,7 @@ package org.apache.royale.jewel.beads.views
 
             formItem = value as FormItem;
 
-            model = _strand.getBeadByType(FormItemModel) as FormItemModel;
+            model = getModelByType(_strand,FormItemModel) as FormItemModel;
 			model.addEventListener("textChange", textChangeHandler);
 			model.addEventListener("htmlChange", textChangeHandler);
             model.addEventListener("requiredChange", requiredChangeHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
index dfba1ee..a22193c 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
@@ -39,6 +39,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.jewel.beads.models.ListPresentationModel;
 	import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
 	import org.apache.royale.utils.getSelectionRenderBead;
+	import org.apache.royale.html.util.getModelByType;
 
 	/**
 	 *  The ListView class creates the visual elements of the org.apache.royale.jewel.List
@@ -91,7 +92,7 @@ package org.apache.royale.jewel.beads.views
 		 */
 		override protected function handleInitComplete(event:Event):void
 		{
-			listModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			listModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			listModel.addEventListener("selectionChanged", selectionChangeHandler);
 			listModel.addEventListener("rollOverIndexChanged", rollOverIndexChangeHandler);
 			
@@ -284,7 +285,7 @@ package org.apache.royale.jewel.beads.views
 		{
 			super.handleInitComplete(event);
 
-			listModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			listModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			listModel.addEventListener("selectionChanged", selectionChangeHandler);
 			listModel.addEventListener("rollOverIndexChanged", rollOverIndexChangeHandler);
 		}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/NumericStepperView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/NumericStepperView.as
index a9ac4e6..483a89b 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/NumericStepperView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/NumericStepperView.as
@@ -32,6 +32,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.jewel.Label;
     import org.apache.royale.jewel.Spinner;
     import org.apache.royale.jewel.TextInput;
+    import org.apache.royale.html.util.getModelByType;
 	
 	/**
 	 *  The NumericStepperView class creates the visual elements of the 
@@ -95,7 +96,7 @@ package org.apache.royale.jewel.beads.views
 			(value as IParent).addElement(spinnerview.increment as IChild);
 			(value as IParent).addElement(spinnerview.decrement as IChild);
 			
-			var model:IRangeModel = _strand.getBeadByType(IRangeModel) as IRangeModel;
+			var model:IRangeModel = getModelByType(_strand,IRangeModel) as IRangeModel;
 			spinner.value = model.value;
 			input.text = String(model.value);
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/RadioButtonView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/RadioButtonView.as
index e26a169..9fc5dec 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/RadioButtonView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/RadioButtonView.as
@@ -30,6 +30,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.core.IStrand;
 	import org.apache.royale.core.IValueToggleButtonModel;
 	import org.apache.royale.events.Event;
+	import org.apache.royale.html.util.getModelByType;
 	
 	/**
 	 *  The RadioButtonView class creates the visual elements of the org.apache.royale.jewel.RadioButton
@@ -107,7 +108,7 @@ package org.apache.royale.jewel.beads.views
 		override public function set strand(value:IStrand):void
 		{
 			super.strand = value;
-			_toggleButtonModel = value.getBeadByType(IValueToggleButtonModel) as IValueToggleButtonModel;
+			_toggleButtonModel = getModelByType(value,IValueToggleButtonModel) as IValueToggleButtonModel;
 			_toggleButtonModel.addEventListener("textChange", textChangeHandler);
 			_toggleButtonModel.addEventListener("htmlChange", htmlChangeHandler);
 			_toggleButtonModel.addEventListener("selectedValueChange", selectedValueChangeHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
index dc03a59..4859ee0 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
@@ -109,7 +109,7 @@ package org.apache.royale.jewel.beads.views
 			super.strand = value;
 
             var host:UIBase = UIBase(_strand);
-            rangeModel = _strand.getBeadByType(IBeadModel) as IRangeModel;
+            rangeModel = host.model as IRangeModel;
 
             COMPILE::SWF {
 				_track = new Button();
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SpinnerView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SpinnerView.as
index d0d6569..f43081a 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SpinnerView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SpinnerView.as
@@ -34,6 +34,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.events.Event;
     import org.apache.royale.jewel.Button;
     import org.apache.royale.jewel.beads.controls.spinner.ISpinnerView;
+    import org.apache.royale.core.IStrandWithModel;
 
 	/**
 	 *  The SpinnerView class creates the visual elements of the org.apache.royale.jewel.Spinner
@@ -106,7 +107,7 @@ package org.apache.royale.jewel.beads.views
 
 				UIBase(_strand).addChild(_decrement);
 				UIBase(_strand).addChild(_increment);
-				rangeModel = _strand.getBeadByType(IBeadModel) as IRangeModel;
+				rangeModel = (_strand as IStrandWithModel).model as IRangeModel;
 			}
 			
 			listenOnStrand("widthChanged",sizeChangeHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
index 932664b..9177d39 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
@@ -26,6 +26,7 @@ package org.apache.royale.jewel.beads.views
 	import org.apache.royale.events.Event;
 	import org.apache.royale.html.beads.VirtualDataContainerView;
 	import org.apache.royale.utils.getSelectionRenderBead;
+	import org.apache.royale.html.util.getModelByType;
 		
 	/**
 	 *  The VirtualListView class creates the visual elements of the org.apache.royale.jewel.List
@@ -59,7 +60,7 @@ package org.apache.royale.jewel.beads.views
 		 */
 		override protected function handleInitComplete(event:Event):void
 		{
-			listModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			listModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
 			listModel.addEventListener("selectionChanged", selectionChangeHandler);
 			listModel.addEventListener("rollOverIndexChanged", rollOverIndexChangeHandler);
 			listModel.addEventListener("popUpCreated", itemsCreatedHandler);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
index 62627ae..08f3408 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
@@ -171,7 +171,7 @@ package org.apache.royale.jewel.beads.views
 
             wizard = value as Wizard;
 			
-			model = _strand.getBeadByType(WizardModel) as WizardModel;
+			model = wizard.model as WizardModel;
 			model.addEventListener("currentStepChange", handleStepChange);
 			model.addEventListener("showPreviousButtonChange", handleStepChange);
 			model.addEventListener("showNextButtonChange", handleStepChange);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/ComboBoxPopUp.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/ComboBoxPopUp.as
index c94c438..d3e5a51 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/ComboBoxPopUp.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/combobox/ComboBoxPopUp.as
@@ -24,6 +24,7 @@ package org.apache.royale.jewel.supportClasses.combobox
     import org.apache.royale.core.ISelectionModel;
     import org.apache.royale.core.StyledUIBase;
     import org.apache.royale.jewel.beads.models.ComboBoxPresentationModel;
+    import org.apache.royale.html.util.getModelByType;
     
     //--------------------------------------
     //  Events
@@ -139,7 +140,7 @@ package org.apache.royale.jewel.supportClasses.combobox
 		 */
 		public function get presentationModel():IComboBoxPresentationModel
 		{
-			var presModel:IComboBoxPresentationModel = getBeadByType(IComboBoxPresentationModel) as IComboBoxPresentationModel;
+			var presModel:IComboBoxPresentationModel = getModelByType(this,IComboBoxPresentationModel) as IComboBoxPresentationModel;
 			if (presModel == null) {
 				presModel = new ComboBoxPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
index 1454155..59d06fa 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
@@ -24,6 +24,7 @@ package org.apache.royale.jewel.supportClasses.datagrid
     import org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel;
     import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
     import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
+    import org.apache.royale.html.util.getModelByType;
     
     /**
      *  The DataGridColumnList class is the List class used internally
@@ -100,7 +101,7 @@ package org.apache.royale.jewel.supportClasses.datagrid
 		 */
 		override public function get presentationModel():IBead
 		{
-			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
+			var presModel:IListPresentationModel = getModelByType(this,IListPresentationModel) as IListPresentationModel;
 			if (presModel == null) {
 				presModel = new DataGridColumnListPresentationModel();
 				addBead(presModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/VirtualDataGridColumnList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/VirtualDataGridColumnList.as
index b4daa96..5738c64 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/VirtualDataGridColumnList.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/VirtualDataGridColumnList.as
@@ -24,6 +24,7 @@ package org.apache.royale.jewel.supportClasses.datagrid
     import org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel;
     import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
     import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
+    import org.apache.royale.html.util.getModelByType;
     
     /**
      *  The VirtualDataGridColumnList class is the VirtualList class used internally
@@ -100,7 +101,7 @@ package org.apache.royale.jewel.supportClasses.datagrid
 		 */
 		override public function get presentationModel():IBead
 		{
-			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
+			var presModel:IListPresentationModel = getModelByType(this,IListPresentationModel) as IListPresentationModel;
 			if (presModel == null) {
 				presModel = new DataGridColumnListPresentationModel();
 				addBead(presModel);