refactor user model into traits