Add sampling architecture and some basic samplers