The arms and gun is welded to the torso, and then after a few seconds the gun pops loose and gets unequipped, or the arms fall off. Is there anyway I can change the script to do the following?

script.Parent.Equipped:connect(function()
	weld2 = Instance.new("Weld")
	weld2.Part0 = script.Parent.Parent.Torso
	weld2.Part1 = script.Parent.Parent["Left Arm"]
	weld2.C0 = CFrame.new(-0.2,0.4,-0.9)*CFrame.fromEulerAnglesXYZ(math.pi/2, 0, math.pi/6)
	weld2.Parent = script.Parent.Parent["Torso"]
	weld3 = Instance.new("Weld")
	weld3.Part0 = script.Parent.Parent.Torso
	weld3.Part1 = script.Parent.Parent["Right Arm"]
	weld3.C0 = CFrame.new(0.5,0.5,-0.5)*CFrame.fromEulerAnglesXYZ(math.pi/2,0,0)
	weld3.Parent = script.Parent.Parent["Torso"]
	weld1 = Instance.new("Weld")
	weld1.Part0 = script.Parent.Parent["Right Arm"]
	weld1.Part1 = script.Parent.Handle
	weld1.C0 = CFrame.new(0,-1,-0.5)*CFrame.fromEulerAnglesXYZ(math.pi, 0, 0)
	weld1.Parent = script.Parent.Parent["Right Arm"]
end)

script.Parent.Unequipped:connect(function()
game.Debris:AddItem(weld1,0)
game.Debris:AddItem(weld2,0)
game.Debris:AddItem(weld3,0)