     public typealias Handler = T -> Void
 
     /// A subscriber tuple
-    private typealias Subscriber = (token: SubscriptionHolder, handler: Handler)
+    private typealias Subscriber = (token: Subscription.Holder, handler: Handler)
 
     /// The current subscribers for this event
     private var subscribers: [Subscriber] = []

    }
}

/**
 This is used to contain subscriptions w/o reference
 it is necessary for the reference management to work

 It should only be used internally.
 */
private struct SubscriptionHolder {
    /// The subscription that should be contained
    weak var subscription: Subscription?
}

/**

 Set all references to `nil` to no longer receive events
 */
public final class Subscription {
    /**
     Completion to run on deinit.

