Need help fixing tank turret

So, i’ll be pretty straight forwards, im making new tanks for my old game, and i need help fixing it, i’ve never really worked with tanks before, so its new to me.

The script works, it just acts weird,

the issue:

The turret does not rotate all the way to the mouse, and even goes the opposite way.
The turret rotates instantly, and i want it to slowly rotate.

My code:

local ws = workspace
local tank = ws["Tiger I"]

local turret = tank:WaitForChild("Turret")

local turretMain = turret.Main
local barrelMain = turret.Main2

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.Move:Connect(function()
	turret:SetPrimaryPartCFrame(turret:GetPrimaryPartCFrame() * CFrame.fromEulerAnglesXYZ(0,mouse.X,0))
end)

a video demonstrating:
https://gyazo.com/4c2dd00c45bc0bbd20ab500e53fde426

Thanks for any help!

For smooth, proper rotation i suggest you using TweenService | Roblox Creator Documentation

How would I do that, I don’t really use tweenService much.

local ws = workspace
local tank = ws["Tiger I"]

local turret = tank:WaitForChild("Turret")

local turretMain = turret.Main
local barrelMain = turret.Main2

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.Move:Connect(function()
    turret:SetPrimaryPartCFrame(turret:GetPrimaryPartCFrame():Lerp(CFrame.new(turret:GetPrimaryPartCFrame(),Vector3.new(mouse.Hit.X,0,mouse.Hit.Z)),1))

end)

that made an error, i dont know how to fix it, the error is:
invalid argument #1 to 'new' (Vector3 expected, got CFrame)