This is an attempt to modernise the event manager implementation using an operation queue and the dispatch api