Refactor package structure
Refactor Builder mechanism
Add some new functions