             
             guard
                 
-                let event:MConnectedEventProtocol = factoryEvent(
-                    log:log,
-                    timestamp:timestamp)
+                let router:Router = kRouterMap[
+                    log.logType],
+                let event:MConnectedEventProtocol = router(
+                    log,
+                    timestamp)
                 
-                else
+            else
             {
                 continue
             }

extension MConnected
{
    private typealias Router = (
        (log:MVitaLinkLogProtocol,
        timestamp:String) -> (MConnectedEventProtocol?))
    
    //MARK: private
    
    private class func factoryEvent(
        log:MVitaLinkLogProtocol,
        timestamp:String) -> MConnectedEventProtocol?
    {
        switch log.logType
        {
        case MVitaLinkLogType.system:
            
            let event:MConnectedEventProtocol? = factoryEvent(
                logSystem:log,
                timestamp:timestamp)
            
            return event
            
        case MVitaLinkLogType.gameSave:
            
            let event:MConnectedEventProtocol? = factoryEvent(
                logGameSave:log,
                timestamp:timestamp)
            
            return event
        }
    }
    
    private class func factoryEvent(
        logSystem:MVitaLinkLogProtocol,
        timestamp:String) -> MConnectedEventProtocol?
    {
        guard
            
            let logSystem:MVitaLinkLogSystem = logSystem as? MVitaLinkLogSystem
            
            else
        {
            return nil
        }

        return event
    }
    
    private class func factoryGameSave(
        log:MVitaLinkLogProtocol,
        timestamp:String) -> MConnectedEventProtocol?
    {
        guard
