generator types