improved web.js