         self = this;
         opts = {
             selector: subview.container || "[data-hook='#{subview.hook||name}']"
-            waitFor: subview.waitFor || '',
+            waitFor: subview.waitFor || subview.model || subview.collection || ''
             prepareView: subview.prepareView || (el,options)->
                 klass = self._subviewClass(subview)
                 if subview.collection
                     new Lanes.Vendor.Ampersand.CollectionView({
                         el: el, parent: self, viewOptions: options, view: klass,
-                        collection: _.getPath(this,subview.collection)
+                        collection: _.getPath(this, subview.collection)
                     })
                 else
-                    new klass(_.extend(options,{ el: el, parent: self }))
+                    options = _.extend(options,{ el: el, parent: self })
+                    for attr in ['model','data']
+                        if subview[attr]
+                            options[attr] = _.getPath(this, subview[attr])
+                    new klass(options)
 
         }
         action = ->

delegateEventSplitter = /^(\S+)\s*(.*)$/
class ViewBase

    extendedProperties: ['ui']

    # Custom datatypes for views
    dataTypes:


        # bind each of the selectors
        for key, selector of bindings
            this.ui[key] = this.$el.filter(selector).add(this.$el.find(selector))


    # Sets callbacks, where `this.domEvents` is a hash of
