--//Morph
game.Players.PlayerAdded:connect(function(plr)
	plr.CharacterAdded:connect(function(char)
	wait()
	
	local model = game.Workspace.SWarriorMorph:clone()
	model.Parent = char
	model:MoveTo(char.Torso.Position)
	
	local bpos = Instance.new("BodyPosition")
	bpos.Position = Vector3.new(char.Torso.Position.X, char.Torso.Position.Y, char.Torso.Position.Z)
	bpos.Parent = char.Torso
	bpos.P = 0
	bpos.D = 0
	
	local charparts = char:GetChildren()
		for i = 1, #charparts do
			if charparts[i].ClassName == "Part" or charparts[i].ClassName == "MeshPart" or charparts[i].ClassName == "UnionOperation" then
				charparts[i].Anchored = false
				charparts[i].Transparency = 1
				if charparts[i].Name == "Head" then
					charparts[i].face:Destroy()
				end
			elseif charparts[i].ClassName == "Accessory" then
				charparts[i]:Destroy()
			end
				
		local torsoweld = Instance.new("Motor6D")
		torsoweld.Part0 = char.HumanoidRootPart
		torsoweld.Part1 = model.BodyParts.HumanoidRootPart
		torsoweld.C0 = CFrame.new(0,0,0)
		torsoweld.Parent = char.Torso
	
		local animcontroller = Instance.new("AnimationController")
		local anim = Instance.new("Animator")
		anim.Parent = animcontroller
		animcontroller.Parent = char.Humanoid

		end
	end)
end)

This is the morph script. This is my second ever morph, so I don't know how to fix this...

When I test it out, after 5 seconds or so, the morph glitches out and spins. Can somebody help?