feat(error): add error handling