promote primitive