refactor: major API change