wrap in CommonJS