use short to denote factor function type