[update] cleaned up and documented the category model