refactor the project and a new package for Authentication