functional for one type