some improvment of the user model