remove clone in dispatch

In case of big number of listeners (N) and dispatches (M):

1) remove O(M*N) memory complexity from dispatches (cloning problem)
2) add O(N) time, O(N*N) complexity in add/remove

I do not know whether it is useful to someone, I just could not pass up.
I tested it on examples.