Arms not updating

Hello, devs, So I’m working on a game where you use your hands for basically everything. I’m working on doing something like your using your player’s mouse position to control the arms but it’s not working as planned. It is doing stuff like if I move my mouse it does follow it but when it’s already created a weld it just stops and doesn’t follow my player’s mouse anymore. It’s kinda confusing to explain.

Server:

-- Services --
local Players = game:GetService('Players')
local Replicated = game:GetService('ReplicatedStorage')
local RunService = game:GetService('RunService')
---

-- KEY Variables --
local Remotes = Replicated:WaitForChild('Remotes')
local Folder = script.Parent:WaitForChild('Instances')
---

-- Scripts Valueables --
Remotes.Catch.OnServerEvent:Connect(function(Player,Action,Target)
	local MousePos = (Target)
	--
	if Action == 'Catch' and not Player.Character:FindFirstChild('Football') then
		--
		if Folder:FindFirstChild('RWeld') == nil or Folder:FindFirstChild('LWeld') == nil then
			local RWeld = Instance.new('Weld')
			local LWeld = Instance.new('Weld')
			RWeld.Name = 'RWeld'
			RWeld.Parent = Folder
			RWeld.Part0 = Player.Character.Torso
			RWeld.Part1 = Player.Character['Right Arm']
			LWeld.Name = 'LWeld'
			LWeld.Parent = Folder
			LWeld.Part0 = Player.Character.Torso
			LWeld.Part1 = Player.Character['Left Arm']
			--
			local OSTime = os.time()
			local Track
			Track = RunService.Heartbeat:Connect(function()
				local RCF = CFrame.new(Player.Character.Torso.CFrame * Vector3.new(1.2, 1.1, 0), MousePos) * CFrame.Angles(math.pi / 2, 0, 0)
				local LCF = CFrame.new(Player.Character.Torso.CFrame * Vector3.new(-1.2, 1.1, 0), MousePos) * CFrame.Angles(math.pi / 2, 0, 0)
				RWeld.C0 = Player.Character.Torso.CFrame:toObjectSpace(RCF) * CFrame.new(0, -.7, .6)
				LWeld.C0 = Player.Character.Torso.CFrame:toObjectSpace(LCF) * CFrame.new(0, -.7, .6)
				--
				if os.time() - OSTime >= 3 then
					Track:Disconnect()
					RWeld:Destroy()
					LWeld:Destroy()
				end
			end)
			--
			Player.Character.ChildAdded:Connect(function(Child) if Child.Name == 'Football' then task.wait(0.5) Track:Disconnect() RWeld:Destroy() LWeld:Destroy() end end)
		end
	end
end)
---

Client:

-- Services --
local Players = game:GetService('Players')
local Replicated = game:GetService('ReplicatedStorage')
local RunService = game:GetService('RunService')
---

-- KEY Instances --
local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Remotes = Replicated:WaitForChild('Remotes')
local Mouse = Player:GetMouse()
---

-- Scripts Valueables --
Mouse.Button1Down:Connect(function()
	if not Character:FindFirstChild('Football') then
		Mouse.Move:Connect(function()
			local Target = Mouse.Hit.p
			Remotes.Catch:FireServer('Catch',Target)	
		end)
	end
end)
---