local q={}q.__index={}function q.new()return setmetatable({connections={}},q)end function q.Connect(f,q)f.connections[q]=q local P=function()f.connections[q]=nil end return P end function q.Fire(q,...)for q,f in pairs(q.connections)do f(...)end end return q
-- Implementation of signal w/o bindable event

local Signal = {}
Signal.__index = {}

function Signal.new()
	return setmetatable({ connections = {} }, Signal)
end

function Signal:Connect(func)
	self.connections[func] = func

	local disconnect = function()
		self.connections[func] = nil
	end

	return disconnect
end

function Signal:Fire(...)
	for _, func in pairs(self.connections) do
		func(...)
	end
end

return Signal
