refactor user entity