add categorical.py