modify login function