improved User_model