feat: add core functions
feat: event emitter