refactor usermodel