code: function(location, name, data, callback) {
        if (_isArray(name)) {
          callback = data;
          data = name;
          name = null;
        }
        return this.load(location).then(function(content) {
            var rctx = this;
            if (!data) {
              data = _isArray(this.previous_content) ? this.previous_content : [];
            }
            if (callback) {
              $.each(data, function(i, value) {
                var idata = {}, engine = this.next_engine || location;
                name ? (idata[name] = value) : (idata = value);
                callback(value, rctx.event_context.interpolate(content, idata, engine));
              });
            } else {
              return this.collect(data, function(i, value) {
                var idata = {}, engine = this.next_engine || location;
                name ? (idata[name] = value) : (idata = value);
                return this.event_context.interpolate(content, idata, engine);
              }, true);
            }
        });
      }
docs: loads a template, and then interpolates it for each item in the `data` array. If a callback is passed, it will call the callback with each item in the array _after_ interpolation