Weld won't get active

I’m trying to make a time reverse script, I use a local script to save the cframes of parts and when rewinding time, it follows the cframes back. Once done, I fire an event with the cframes so every part has its cframe in the server. But when a part gets destroyed, it also gets placed back because I parent it back. Though, welds gets placed back as well but they don’t become active while they are in the basepart where they are supposed to be. I tried making a new weld and destroying the old ones, but it doesn’t get active. They are enabled and the basepart’s cframes are changed before I’m parenting the welds, so changing the cframes isn’t the reason why the welds get broken all the time. Any idea why this is happening or how I could archive them staying welded?

https://gyazo.com/91216b5dcf4d875f95c3b0a190b78235

Events:WaitForChild("ReverseTimeEvent").OnServerEvent:Connect(function(Player, State, Variable, Variable2, Variable3, Variable4, Variable5, Variable6, Variable7, Variable8)
	if State == "ReverseTime" and Variable ~= nil then
		if Variable:IsA("ManualWeld") then
			local Weld = Instance.new("Weld")
			Weld.Name = Variable.Name
			Weld.Part1 = Variable.Part1
			Weld.Part0 = Variable.Part0
			Weld.C0 = Variable.C0
			Weld.C1 = Variable.C1
			Weld.Enabled = true
			Weld.Parent = Variable4
		end
		Variable.Parent = Variable4
		if Variable:IsA("BasePart") then
			Variable.Anchored = Variable3
			if Variable.CFrame ~= Variable2 then
				Variable.CFrame = Variable2
			end
			Variable.Transparency = Variable6
			Variable.BrickColor = Variable5
			Variable.Size = Variable7
		end
	end
end) 

The variables are the variables of the part that are changed. I’m also using the free model Observation Tower that is full of manualwelds.

Couldn’t you make a function on where every time it is called, it creates a new weld for every part? I think that could fix your problem.