feat: initial es5 implementation