Revert "Major changes in the whole project"

This reverts commit 5aa930f1c42cf712471473ec836f8a87c2eb846e.
Revert "Revert "Major changes in the whole project""

This reverts commit 36ef1357676d367ecbd31dd47d0252875706bc47.