 }
 
 // MARK: subscriber holder
-fileprivate class EventListener<EventType: EventBase> {
+fileprivate class EventListener<EventType: BaseEvent> {
 
     typealias EventListenerClosure = Swen<EventType>.EventListenerClosure
     weak var observer: AnyObject?

    
}

// MARKL: instantiation
fileprivate extension Swen {

    static func instance() -> Swen<EventType> {


import Foundation

public protocol BaseEvent {}
public protocol Event: BaseEvent {}
public protocol StickyEvent: BaseEvent {}

public class Swen<EventType: BaseEvent> {

    fileprivate var listeners = [EventListener<EventType>]()
    public typealias EventListenerClosure = (_ event: EventType) -> Void
