implement category model