Signals
Instead of using Roblox BindableEvent instances, I use my own signal module.
You can create a signal like this:
local mySignal = Signals.New()
And then you can fire it like this:
mySignal:Fire(...)
And of course connect like this:
local conn = mySignal:Connect(Callback)
-- Disconnect
conn:Disconnect()
Very simple and much nicer to use than BindableEvents.