     @props.task.choices[choiceID]?.confusionsOrder.push confusionID
     @props.task.choices[choiceID]?.confusions[confusionID] = details
 
-  addQuestion: ({question, multiple, required, answers, name, __parsedExtra}) ->
-    unless question? or name?
+  addQuestion: ({question, multiple, required, answers, include, exclude, __parsedExtra}) ->
+    unless question?
       throw new Error 'Questions require a "question" column'
     unless answers?
       throw new Error 'Questions require a "answers" column'
 
-    choices = null
-    questionID = null
-    if(!!name)
-      choices = name.split(/\s*;s*/)
-    if(!!question)
-      questionID = @makeID question
+    includeChoices = include?.split /\s*;\s*/
+    excludeChoices = exclude?.split /\s*;\s*/
+    questionID = @makeID question
 
     # don't put it in the default questionsOrder if we've specified choices it should map to
-    unless choices? or questionID in @props.task.questionsOrder
-      @props.task.questionsOrder.push questionID
+    unless include? or questionID in @props.task.questionsOrder
+      (maybeProp @props.task.questionsOrder, []).push questionID
 
     # if we specified mapped choices, create those entries instead
-    if choices?
-      @props.task.questionsMap ?= {}
-      for choice in choices
-        continue unless !!choice
+    if includeChoices?
+      for choice in includeChoices
+        continue unless choice?
         choiceID = @makeID choice
-        @props.task.questionsMap[choiceID] ?= []
-        @props.task.questionsMap[choiceID].push questionID if questionID?
-
-    # we only can get here if the question stuff is empty and the names are not empty
-    # that means there will be no questions for this choice, so we don't need to actually
-    # store any questions or answers for this row of the csv
-    return unless questionID?
+        (maybeProp @props.task, inclusions, []).push [choiceID, questionID]
+
+    if excludeChoices?
+      for choice in excludeChoices
+        continue unless choice?
+        choiceID = @makeID choice
+        (maybeProp @props.task, exclusions, []). push [choiceID, questionID]
 
     @props.task.questions[questionID] =
       label: question

        </TriggeredModalForm>
      </div>
      <div className="columns-container" style={marginBottom: '0.2em'}>
        <FileButton className="major-button column" accept=".csv, .tsv" multiple onSelect={@handleFiles.bind this, @addConfusion}>Add confused pairs CSV</FileButton>
        <TriggeredModalForm trigger={
          <span className="secret-button">
            <i className="fa fa-question-circle"></i>

        </TriggeredModalForm>
      </div>
      <div className="columns-container" style={marginBottom: '0.2em'}>
        <FileButton className="major-button column" multiple onSelect={@handleFiles.bind this, @addQuestion, @cleanQuestions}>Add questions CSV</FileButton>
        <TriggeredModalForm trigger={
          <span className="secret-button">
            <i className="fa fa-question-circle"></i>
