refactor password change work flow