imporve login function