refactor + change api (levels)