         eventManager.trigger(event)
     }
 
+    public func trigger<EventType: RawRepresentable where EventType.RawValue == String>(name: EventType, data: Any? = nil){
+        let event = Event(name: name.rawValue, publisher: self, data: data)
+        eventManager.trigger(event)
+    }
+
     public func stopListening(name: String) -> Self{
         eventManager.stopListening(self.eventManager, name: name)
         return self

        eventManager.stopListening()
        return self
    }
}
        return self
    }


    // ---- String Enums

    public func listenTo<Publisher, EventType where Publisher: EventManagerHost, EventType: RawRepresentable, EventType.RawValue == String>(publisher: Publisher, _ name: EventType, callback: () -> ()) -> Self{
        eventManager.listenTo(publisher.eventManager, name: name.rawValue, callback: callback)
        return self
    }

    public func listenTo<Publisher, EventType where Publisher: EventManagerHost, EventType: RawRepresentable, EventType.RawValue == String>(publisher: Publisher, _ name: EventType, callback: (Publisher) -> ()) -> Self{
        eventManager.listenTo(publisher.eventManager, name: name.rawValue, callback: callback)
        return self
    }

    public func listenTo<Publisher, Data, EventType where Publisher: EventManagerHost,EventType: RawRepresentable, EventType.RawValue == String>(publisher: Publisher, _ name: EventType, callback: (Publisher, Data) -> ()) -> Self{
        eventManager.listenTo(publisher.eventManager, name: name.rawValue, callback: callback)
        return self
    }

    // ----

