Add authorization layer and modify project structure