 Type-safe publish/subscribe implementation, where you use custom enums as events.
 Use static functions to publish/subscribe on events.
 */
-class Eventer<T: Event> {
+class Eventer<EventType: Event> {
     /**
     Publish event
     
     :param: event Your event
     */
-    class func publish(event: T) {
+    class func publish(event: EventType) {
         publish(event, to:.Immediate)
     }
     

    
    :param: action Function or closure without argument
    */
    class func subscribe(events: [T], action: Action.SimpleAction) {
        let eventer = Eventer.sharedInstance
        for event in events {
            eventer.actions.append((event, Action.Simple(action)))
        }
    }
    
    /**

    :param: event Your event
    
    :param: action Function or closure without argument
    
    :returns: Subscription token
    */
    class func subscribe(event: EventType, action: Action.SimpleAction) -> String {
        return subscribe([event], action: action)
    }
    
    /**
