- review and improve the current implementations - support both esm and commonjs - update readme - add more tests