separated js (esm)