format nicely, add async.js, respond with log