ground work for user model
unfinished user model