docs: function createApp (appname, spec, cb, resourceModules) {
    var moduleNames = resourceModules
    async.parallel([ function (cb) {
      async.each(spec.agents, function (agent, cb) {
        moduleNames.push(agent.name)
        createAgent(appname, spec, agent, cb)
      }, cb)
    }, function (cb) {
      async.each(spec.crud, function (crud, cb) {
        var crudName = crud.name
        if (crudName.charAt(0) == '/') {
          crudName = crudName.substr(1)
        }
        crud.name = crudName.replace(/\//g, '_')
        moduleNames.push(crud.name)
        createCrud(appname, spec, crud, cb)
      }, cb)
    }, function (cb) {
      createTemplate(appname, 'app.js', {
        moduleNames: moduleNames,
        agents: spec.agents
      })
      cb()
    }, function (cb) {
      createTemplate(appname, 'appConfig.js', {
        moduleNames: moduleNames,
        agents: spec.agents
      })
      cb()
    } ], function (err) {
      fs.mkdir(path.join(path.resolve(appname), 'generated', 'locale'), function (response) {
        createLocale(appname)
        cb()
      })
    })
  }