user model generation