     
     if !@config.nest
       # loop through properties iode to pick up any key/values that should be choose
-      for key, value of node
-        # skip if node property already used, the property was specified by the template, or it should not be choose
-        if @paths(node).indexOf(key) is -1 and key not in context and @isProcessable node, value, key
-          formatted = @applyFormatting node, value, key
-          context[formatted.key] = formatted.value if formatted.value?
+      # skip if node property already used, the property was specified by the template, or it should not be choose
+      for key, value of node when @paths(node).indexOf(key) is -1 and key not in context and @isProcessable node, value, key
+        formatted = @applyFormatting node, value, key
+        context[formatted.key] = formatted.value if formatted.value?
       
     context
   

    
    context = {}
    # loop through properties to pick up any key/values that should be nested
    for key, value of node
      if @isProcessable node, value, key
        nested_value = @chooseValue @getNode(node, key), {}
        formatted = @nestNodes node, nested_value, key
        context[formatted.key] = formatted.value if formatted.value?
    context
    
  nestNodes: (node, value, key) =>

    # convert array to chooser function that compares key names
    if !@config.choose
      @config.choose = []
      for key, value of @config.as when sysmo.isString(value)
        @config.choose.push value.split('.')[0]
    # create callback for arry
    if sysmo.isArray @config.choose
      return true for element in @config.choose when sysmo.isNumber(key) or element is key
      return false
    # if not a function yet, treat as boolean value
    if !sysmo.isFunction @config.choose
