[Improved] Use guava instead of this basic util
[Fixed] Ensure that all events are fired asynchronously