API update and refactoring
Refactor
Merge remote