         adjusted = if @index > -1 then @index else -1  # todo: better name (this is for if prompt offset)
         @selected = Ember.EnumerableUtils.indexOf(selectedIndexes, adjusted) > -1
 
-  _triggerChange: ->
-    selection = @get('selection') # todo try other syntax
+  _triggerChange: (->
+    selection = @get('selection')
     @selectionDidChange() if not Ember.isNone(selection)
 
     @_change()
+  ).on('didInsertElement')
 
-  _change: ->
+  _change: (->
     # todo: get rid of this proxy fn
     @_changeMultiple()
+  ).on('change')
 
   _changeMultiple: ->
     options = this.$('input[type=checkbox]:checked')

      if Ember.isArray selection
        Ember.EnumerableUtils.replace selection, 0, Ember.get(selection, 'length'), newSelection
      else
        Ember.set(@, 'selection', newSelection)


  optionView: App.MultiSelectOption

  selectionDidChange: (->
    selection = @get('selection')
    if not Ember.isArray(selection)
      @set('selection', Ember.A([selection]))
      return
    @_selectionDidChangeMultiple()
  ).observes 'selection.@each'

  # todo: consider consolidating all private "multiple" fns that are needed
  _selectionDidChangeMultiple: ->
    content = @get('content')
    selection = @get('selection')
    selectedIndexes = if content then Ember.EnumerableUtils.indexesOf(content, selection) else [-1]
    options = @$('input[type=checkbox]')
