api refactoring continued