support table driven in a clean way.