Generalize the event dispatcher to take any kind of event.
Add new types of event
rename function
Random opponent is working.