working on gen types