code: function parse_files(files, options, callback) {
    var nodes = {
      // root section node
      '': {
        id: '',
        type: 'section',
        children: [],
        description: '',
        short_description: '',
        href: '#',
        root: true,
        file: '',
        line: 0
      }
    };
  
    var reportObject = { };
    
    async.forEachSeries(files, function (file, next_file) {
      var fn = parsers[path.extname(file)];
  
      if (!fn) {
        next_file();
        return;
      }
  
      console.info('Parsing file: ' + file);
      fn(file, options, function (err, file_nodes, file_report) {
        // TODO:  fail on name clash here as well -- as we might get name clash
        //        from different parsers, or even different files
        _.extend(nodes, file_nodes);
        _.extend(reportObject, file_report);
        next_file(err);
      });
    }, function (err) {
      callback(err, nodes, reportObject);
    });
  }
docs: parse all files and prepare a "raw list of nodes