             CFNotificationCenterAddObserver(center, unsafeAddressOf(self), callBack, identifier, nil, CFNotificationSuspensionBehavior.DeliverImmediately)
 
 
-            // Try fire Listener's action
-
-            if let message = messageWithIdentifier(identifier) {
-                listener.action(message)
-            }
+            // Try fire Listener's action for first time
+
+            listener.action(messageWithIdentifier(identifier))
         }
     }
 


            let block: @objc_block (CFNotificationCenter!, UnsafeMutablePointer<Void>, CFString!, UnsafePointer<Void>, CFDictionary!) -> Void = { _, _, _, _, _ in

                if let message = self.messageWithIdentifier(identifier) {
                    if self.messageListenerSet.contains(messageListener) {
                        messageListener.listener.action(message)
                    }
                }
            }



    public typealias Message = NSCoding

    public func passMessage(message: Message?, withIdentifier identifier: String) {

        if identifier.isEmpty {
            fatalError("ERROR: Message need identifier")
        }

        if let message = message {
            var success = false

            if let filePath = filePathForIdentifier(identifier) {
                let data = NSKeyedArchiver.archivedDataWithRootObject(message)
                success = data.writeToFile(filePath, atomically: true)
            }

            if success {
                if let center = CFNotificationCenterGetDarwinNotifyCenter() {
                    CFNotificationCenterPostNotification(center, identifier, nil, nil, 1)
                }
            }

        } else {
            if let center = CFNotificationCenterGetDarwinNotifyCenter() {
                CFNotificationCenterPostNotification(center, identifier, nil, nil, 1)
            }
        }
    }

    public struct Listener {

        public typealias Action = Message? -> Void

        let name: String
        let action: Action
