code: function concat(options, callback) {
    var files = options.files.map(function(file, i) {
      return {
        path: node_path.join(lib, file + '.js'),
        index: i
      }
    });
  
    var contents = [];
    async.each(files, function(task, done) {
      fs.readFile(task.path, function(err, content) {
        if (err) {
          return done(err);
        }
  
        contents[task.index] = content.toString();
        done(null);
      });
  
    }, function(err) {
      if (err) {
        return callback(err);
      }
  
      var intro = options.intro ? options.intro + '\n\n\n' : '';
      var outro = options.outro ? '\n\n\n' + options.outro : '';
      var content = intro + contents.join('\n\n') + outro;
      content = content.replace(/@VERSION/g, concat.version());
      callback(null, content);
    });
  }
docs: - files: {Array} - intro: {String} - outro: {String}