now users can change their password, and refactor the project code structure to keep the code more clean