Rotate block using CFrame

Im trying to make a script where a block gets rotated 90 degrees when R is pressed. this is what ive tried so far:

local orientation = CFrame.Angles(0, 0, 0)

game:GetService("UserInputService").InputBegan:Connect(function(input)
	if input.KeyCode == Enum.KeyCode.R then
		orientation = orientation + CFrame.Angles(0, math.rad(90), 0)
	end
end)

The problem is that it is not possible to add to a CFrame, only on Vector3.

How do I make it so that I can add value the same way I can add value on Vector3?

(keep in mind, this is a small example of the code)

Take the part and do

part.CFrame = part.CFrame * CFrame.Angles(0,math.rad(90),0)

assignment operator is more performant and is generally the convention nowadays

part.CFrame *= CFrame.Angles(0, math.rad(90), 0)

Also consider reusing that CFrame so you don’t redundantly make a new one every single time

--main scope
local delta: CFrame = CFrame.Angles(0, math.rad(90), 0)

--inside a new thread or a loop
part.CFrame *= delta

Sorry for late reply, what im trying to acheive is a CFrame.Angles() value in a local script and then send that information over to a server script to complete the action.

Thats why i wanna make it the same way you can with Vector3 where you can do orientation + Vector3.New(0, 90, 0) where you add 90 degrees when R is pressed.