local mainStorage = game.ServerStorage.City
local main = script.Parent
local fowardEvent = mainStorage.FowardEvent
local backEvent = mainStorage.BackEvent

local foward = function(time)
	local currentModel 								-- Gets the first model in mains
	for _, child in pairs(main:GetChildren()) do 	-- children. Assumming everything else
		if child:IsA("Model") then 					-- in the script goes right the
			currentModel = child 					-- current model will be the only child
		end 										-- that is a model.
	end
	local currentModelAge = tonumber(currentModel.Name) -- The currentModel's name is its age.

	local nextModel = mainStorage:FindFirstChild(currentModelAge + time)
	if nextModel ~= nil then
		currentModel.Parent = mainStorage
		nextModel.Parent = main
		return
	end

	nextModel = currentModel:Clone()
	local ageEvent = nextModel.AgeEvent
	currentModel.Parent = mainStorage
	nextModel.Name = currentModelAge + time
	nextModel.Parent = main

	print("Fired")
	ageEvent:Fire(time)
end
fowardEvent.event:Connect(foward)

local back = function(time)
	local currentModel 								-- Gets the first model in mains
	for _, child in pairs(main:GetChildren()) do 	-- children. Assumming everything else
		if child:IsA("Model") then 					-- in the script goes right the
			currentModel = child 					-- current model will be the only child
		end 										-- that is a model.
	end
	local currentModelAge = tonumber(currentModel.Name) -- The currentModel's name is its age.

	local previousModel = mainStorage:FindFirstChild(currentModelAge - time) 	-- Checks to see if the model
	if previousModel ~= nil then 												-- we want has already been
		currentModel.Parent = mainStorage 										-- created. If it has
		previousModel.Parent = main 											-- its parent is set to main
		return 																	-- the current one's to storage
	end 																		-- and the function is ended.

	local storageModels = mainStorage:GetChildren() 	-- If we didnt find a model before
	local timeDistance = 9999999999 					-- we look though all the ones
	for _, child in pairs(storageModels) do 			-- in storage and find the model
		if child:IsA("Model") then 						-- with the shortest negetive time
			local childAge = tonumber(child) 			-- to the target one
			local difference = currentModelAge - time - childAge
			if childAge > currentModelAge - time then

			elseif difference < timeDistance then
				timeDistance = difference
				previousModel = child
			end
		end
	end

	previousModel = previousModel:Clone() 			-- Once we found a sutible model
	currentModel.Parent = main 						-- we set its parents and store the old one
	previousModel.Name = currentModelAge - time
	previousModel.Parent = main

	previousModel.AgeEvent:Fire(currentModelAge - time - tonumber(previousModel.Name))	-- Age the model to the ammount required to reach target
end
backEvent.event:Connect(back)