added commonjs support