api refactoring
merge