feels slightly odd to do a shallow copy on each invocation, especially when the callbacks set doesnt change. 

But it's not really worth it to try to keep a reference of the copy either, so I'm okay with the copy