             }
         }
 
-        let holder = SubscriptionHolder(subscription: newSubscription)
+        let holder = Subscription.Holder(subscription: newSubscription)
         subscribers.append((holder, handler))
 
         return newSubscription

    }
}

/**
 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?
}

/**

    public typealias Handler = T -> Void

    /// A subscriber tuple
    private typealias Subscriber = (token: Subscription.Holder, handler: Handler)

    /// The current subscribers for this event
    private var subscribers: [Subscriber] = []
