   render: ->
     console.log "rendering view", @
     @_template = new Template(JST[ @tpl_path() ])
-    $(@el).html(@_template.render(@))
+
+    # use an optional [dynamic] selector
+    el = null
+    if @selector?
+      if _.isFunction(@selector)
+        el = @selector()
+      else
+        el = el
+    else
+      el = @el
+
+    @setElement(el)
+    @$el.html(@_template.render(@))
     @
 
   # proxy for Stark.state#transition

    _.each @app_events, (cb, key) ->
      @app.subscribe(key, cb)
    , @

  state: null
  template: null
  app_events: null
  selector: null
  views: [] # sub-views

  initialize: ->
    _.bindAll @
