protocol Eventable : AnyObject
var listeners: [Event : [(Any) -> Void]]
func emit(Event, with: Any)
func on(Event, do: (Any) -> Void) -> Int