   ``
 
 class XLF.SkipLogicClause extends Backbone.Model
+  questionNamePattern: /\${(\w+)}/
   serialize: () ->
     if (@isValid())
       return "${" + @get('questionName') + "} = " + @get('criterion')
+  parse: (value) ->
+    value = value.split('=')
+    if value.length == 2
+      @set('questionName', @questionNamePattern.exec(value[0])[1])
+      @set('criterion', value[1].substring(1))
 
 DetailViewMixins.relevant = 
   html: ->

    """

  afterRender: ->
    button = @$el.find("button")
    button.click () =>
      @skipLogicClause = new XLF.SkipLogicClause()
      @skipLogicClause.parent = @model
      @model.parentRow.skipLogicClause = @skipLogicClause

      new XLF.SkipLogicView(relevantDetailView: @, model: @skipLogicClause).render().$el.appendTo(@$el)
      button.off('click')

    viewUtils.makeEditable @, @model, 'code', {}


    viewUtils.makeEditable @, @model, 'code', {}

class XLF.SkipLogicView extends Backbone.View
  alreadyRendered: false
  initialize: (opts) ->
    @relevantDetailView = opts.relevantDetailView
    #@model = @relevantDetailView.model
  render: ($outerEl) ->
    if !@alreadyRendered
      @$el.html('<select></select> was <input placeholder="response value" type="text" />')
      select = @$el.find('select')
      input = @$el.find('input')
      survey = @model.parent.getSurvey()
      surveyNames = survey.getNames()

      $("<option>", {value: '-1', html: 'Question...'}).appendTo(select)
      
      for name in surveyNames
        $("<option>", {value: name, html: name, disabled: name is @model.parent.parentRow.get('name').get('value')}).appendTo(select)

      wireUpInput(select, @model, 'questionName')

      wireUpInput(input, @model, 'criterion')

      disableDefaultOption = () -> 
        $('option[value=-1]', select).prop('disabled', true)
        select.off('change', disableDefaultOption)
      
      select.on('change', disableDefaultOption)
      $outerEl.append(@el)
      @alreadyRendered = true
    else
      @$el.toggle()
    
    @

