cat_id is optional