code: function createFunctionFiles(name, callback) {
    const regExp = /^[a-zA-Z][a-zA-Z0-9-]+$/;
    let q = d3.queue(1);
  
    if (!name.match(regExp)) {
      return callback('Not a valid AWS CloudFormation stack name - must contain only letters, numbers, dashes and start with an alpha character');
    }
  
    fs.mkdir(name, function(err) {
      if (err) {
        if (err.code !== 'EEXIST') {
          return callback(err);
        }
      }
      process.chdir(name);
      let files = fs.readdirSync(process.cwd());
      if (files.indexOf('function.js') === -1) {
        let functionJsContent = 'var lambdaCfn = require(\'@mapbox/lambda-cfn\');\n\n'
              + 'module.exports.fn = function(event, context, callback) {\n'
              + '// write Lambda function code here\n\n};';
        q.defer(fs.writeFile, 'function.js', functionJsContent);
      }
      if (files.indexOf('function.template.js') === -1) {
        let functionTemplateContent = 'var lambdaCfn = require(\'@mapbox/lambda-cfn\');\n\n'
              + 'module.exports = lambdaCfn.build({\n'
              + '  name: \'' + name + '\'\n'
              + '});';
        q.defer(fs.writeFile, 'function.template.js', functionTemplateContent);
      }
  
      q.awaitAll(function(err) {
        if(err) return callback(err);
        return callback(null, 'Created function skeleton files');
      });
    });
  }
docs: TODO: overhaul this with promises to make managing the async file writes a bit easier to deal with