add direct sampler for categorical