added CommonJS module support