     selectedOptions[i] = option
     value = @props.annotation.value
 
-    options = @getOptions(i)
+    optionsKeys = (o.value for o in selectedOptions.slice(0,i))
+    options = @getOptions(i, optionsKeys)
     newIndex = options?.indexOf(option)
     if newIndex is -1 or newIndex is undefined
       value[i] = {value: option.value, option: false}
-      @handleOptionsKeys(i, null)
     else
       value[i] = {value: option.value, option: true}
-      @handleOptionsKeys(i, option.value)
 
     @clearRelated(i)
 

        not select.required or (annotation.value[i]?.value? and annotation.value[i]?.value isnt "")

  getInitialState: ->
    optionsKeys: {}
    selectedOptions: []

  componentWillMount: ->

    <GenericTask question={@props.task.instruction} help={@props.task.help} required={@props.task.required}>
      <div>
        {selects.map (select, i) =>
          options = []
          options.push option for option in @getOptions(i, optionsKeys)
          disabled = @getDisabledAttribute(i)
          selectedOption = if @state.selectedOptions[i]?.value then @state.selectedOptions[i] else null
          optionsKeys.push selectedOption.value if selectedOption?.value
