refactored the user creation flow