Problems with Motor6D

Hey, so I have tried this solution. It worked, I mean almost.

game.Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local uppertorso = char:WaitForChild("UpperTorso")
		for i,v in pairs(plr.Backpack:GetChildren()) do
			if v:IsA("Tool") then
				for j,b in pairs(v:GetChildren()) do
					if b:IsA("MeshPart") or b:IsA("Part") then
						if b.Name == "Handle" then
							local clonedB = b:Clone()
							clonedB.Parent = uppertorso
							local weld = Instance.new("Motor6D")
							weld.Parent = uppertorso:FindFirstChild("Handle")
							weld.Part0 = uppertorso
							weld.Part1 = uppertorso:FindFirstChild("Handle")
							weld.C0 = uppertorso.CFrame
							local positionalOffset = CFrame.new(Vector3.new(uppertorso.Position.X,uppertorso.Position.Y,uppertorso.Position.Z+0.65)) -- in this case, it would be 5 units above the humanoidrootpart and 5 units in front of it too.
							local OrientationalOffset = CFrame.Angles(math.rad(0),math.rad(180),math.rad(45))
							weld.C1 = positionalOffset*OrientationalOffset
							clonedB.CanCollide = true
						end
					end	
				end
			end
		end
	end)
end)