updated do_password()