     }
     
     // MARK: private methods
-    fileprivate func addToPool(_ name: String, object: AnyObject?, queue: OperationQueue?, block: @escaping (Notification) -> Void) {
+    private func addToPool(_ name: String, object: AnyObject?, queue: OperationQueue?, block: @escaping (Notification) -> Void) {
         pool.append(ObserverContainer(name: name, object: object, queue: queue, block: block))
     }
     
-    fileprivate func removeFromPool(_ name: String) {
+    private func removeFromPool(_ name: String) {
         pool = pool.filter { $0.name != name }
     }
     
-    fileprivate func payloadFromNotification(_ notification: Notification) -> Any? {
+    private func payload(from notification: Notification) -> Any? {
         return (notification.userInfo?[PayloadContainer.Key] as? PayloadContainer)?.payload
     }
     

    }
    
    private final class ObserverContainer {
        fileprivate let name: String
        private let observer: NSObjectProtocol
        
        init(name: String, object: AnyObject?, queue: OperationQueue?, block: @escaping (_ notification:Notification) -> Void) {
            self.name = name
            self.observer = NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: name),
                object: object,
                queue: queue,
                using: block

    public init() {}

    public static func post(_ name: String, from object: NSObject? = nil, payload: Any? = nil) {
        NotificationCenter.default.post(
            name: Notification.Name(rawValue: name),
            object: object,
            userInfo: payload.map { [PayloadContainer.Key: PayloadContainer(payload: $0)] }
        )
