smaller functions included