       answersOrder: []
       answers: {}
 
-    for answer in answers.split(/;/).concat(__parsedExtra ? []).filter Boolean
+    for answer in ((answers.split /;/).concat __parsedExtra ? []).filter Boolean
       answerID = @makeID answer
       @props.task.questions[questionID].answersOrder.push answerID
       @props.task.questions[questionID].answers[answerID] =
         label: answer
+
+  maybeProp: (owner, prop, defVal) ->
+    owner[prop] = defVal unless owner[prop]?
+    owner[prop]
+
+  cleanQuestions: () ->
+    if @props.task.includeChoices?
+      for includeTuple in @props.task.includeChoices
+        (maybeProp (maybeProp @props.task.questionsMap, {}) includeTuple[0], []).push includeTuple[1]
+
+    if @props.task.questionsOrder?
+      for questionID in @props.task.questionsOrder
+        for choiceID in @props.task.choicesOrder
+          (maybeProp (maybeProp @props.task.questionsMap, {}) choiceID, []).push questionID
+
+    if @props.task.excludeChoices?
+      for excludeTuple in @props.task.excludeChoices
+        questionList = @props.task.questionsMap[excludeTuple[0]]
+        questionList.splice (questionList.indexOf excludeTuple[1]) 1
+
+    return
 
   handleImageAdd: (media) ->
     @props.task.images[media.metadata.filename] = media.src

      </Details>
    </div>

  handleFiles: (forEachRow, e) ->
    @setState
      importErrors: []
    Array::slice.call(e.target.files).forEach (file) =>

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