Added Celluloid as a dependency
Refactored out event generation into the EventFactory and Event classes