primitive generation prototype