code: function(into, data) {
                              var existingDataLen = into.length == 0 ? 0 : into[0].length - 1;
                              var i = 0;
                              var j = 0;
                              for (; i<into.length && j<data.length; ) {
                                  if (into[i][0] == data[j][0]) {
                                      into[i].push(data[j][1]);
                                      i++;
                                      j++;
                                  }
                                  else if (into[i][0] < data[j][0]) {
                                      into[i].push(null);
                                      i++;
                                  }
                                  else {
                                      var arr = [data[j][0]];
                                      for (var k=1; k<into[i].length; k++) {
                                          arr.push(null);
                                      }
                                      arr.push(data[j][1]);
                                      into.splice(i,0,arr);
                                      i++;
                                      j++;
                                  }
                              }
                              while (j<data.length) {
                                  var arr = [data[j][0]];
                                  for (var k=0; k<existingDataLen; k++) {
                                      arr.push(null);
                                  }
                                  arr.push(data[j][1]);
                                  into.push(arr);
                                  j++;
                              }
                          }
docs: should both be sorted already