first commit
Improve the architecture