Refactoring: adjust packages.
Big refactor:
Change package structure
Change API definition
Refine code