Added EventBuilder class and a bunch of polymorphism.