     @meta = new XLF.SkipLogicCollectionMeta()
     super(items, options)
 
+  empty: ->
+    @each (item)=> @remove(item)
+    @
   serialize: ->
-    joiners = {any: " | ", all: " & "}
+    joiners = {any: "|", all: "&"}
     items = @map((item)=> item.serialize())
     items = _.filter(items, (item) -> !!item)
     items.join(joiners[@meta.get("delimSelect")])
   importString: (skipLogicString) ->
     # Note: we can throw an error if something doesn't import
     # and it should go to the "hand code" input.
-    for item in skipLogicString.split(/\&|\|/)
-      @add(new XLF.SkipLogicCriterion(value: item, parentRow: @parentRow))
+    for item in skipLogicString.split(/\&|\|/) when item
+      @add(value: item, parentRow: @parentRow)
+    ``
 
 # To be extended ontop of a RowDetail when the key matches
 # the attribute in XLF.RowDetailMixin

      surveyRows = for r in options.survey
        r._parent = @
        r
      @rows.add surveyRows, collection: @rows, silent: true
    @rows.invoke('parse')


    @skipLogicCollection.serialize()

  parse: ()->
    @skipLogicCollection.empty().importString(@get('value') || '')

@XLF.RowDetailMixins =
  relevant: SkipLogicDetailMixin
