renamed sum to union
renamed product to struct