docs: function(ev, items, index) {
                          // Collect new html and mappings
                          var frag = document.createDocumentFragment(),
                              newNodeLists = [],
                              newIndicies = [];
                          // For each new item,
                          can.each(items, function(item, key) {
                              var itemIndex = can.compute(key + index),
                                  // get its string content
                                  itemHTML = render.call(context, item, itemIndex),
                                  gotText = typeof itemHTML === "string",
                                  // and convert it into elements.
                                  itemFrag = can.frag(itemHTML);
                              // Add those elements to the mappings.
  
                              itemFrag = gotText ? can.view.hookup(itemFrag) : itemFrag;
  
                              var childNodes = can.makeArray(itemFrag.childNodes);
  
  
  
                              newNodeLists.push(nodeLists.register(childNodes));
                              // Hookup the fragment (which sets up child live-bindings) and
                              // add it to the collection of all added elements.
                              frag.appendChild(itemFrag);
                              // track indicies;
                              newIndicies.push(itemIndex);
                          });
                          // The position of elements is always after the initial text placeholder node
                          var masterListIndex = index + 1;
  
  
                          // Check if we are adding items at the end
                          if (!masterNodeList[masterListIndex]) {
                              elements.after(masterListIndex === 1 ? [text] : [nodeLists.last(masterNodeList[masterListIndex - 1])], frag);
                          } else {
                              // Add elements before the next index's first element.
                              var el = nodeLists.first(masterNodeList[masterListIndex]);
                              can.insertBefore(el.parentNode, frag, el);
                          }
                          splice.apply(masterNodeList, [
                                  masterListIndex,
                                  0
                              ].concat(newNodeLists));
  
                          // update indices after insert point
                          splice.apply(indexMap, [
                                  index,
                                  0
                              ].concat(newIndicies));
  
                          for (var i = index + newIndicies.length, len = indexMap.length; i < len; i++) {
                              indexMap[i](i);
                          }
                      }