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);

Reply via email to