 
     func tryStartConnect() {
 
-        guard let userID = YepUserDefaults.userID.value, personalChannel = personalChannelWithUserID(userID) else {
-            println("FayeClient startConnect failed, not userID or personalChannel!")
-            return
-        }
-
-        println("Faye will subscribe \(personalChannel)")
-
-        prepareForChannel("connect")
-        prepareForChannel("handshake")
-        prepareForChannel(personalChannel)
-
         dispatch_async(fayeQueue) { [weak self] in
+
+            guard let userID = YepUserDefaults.userID.value, personalChannel = self?.personalChannelWithUserID(userID) else {
+                println("FayeClient startConnect failed, not userID or personalChannel!")
+                return
+            }
+
+            println("Faye will subscribe \(personalChannel)")
+
+            self?.prepareForChannel("connect")
+            self?.prepareForChannel("handshake")
+            self?.prepareForChannel(personalChannel)
+
+            self?.client.connect()
+        }
+    }
+
+    private func subscribeChannel() {
+
+        dispatch_async(fayeQueue) { [weak self] in
+
+            guard let userID = YepUserDefaults.userID.value, personalChannel = self?.personalChannelWithUserID(userID) else {
+                println("FayeClient startConnect failed, not userID or personalChannel!")
+                return
+            }
 
             self?.client.subscribeToChannel(personalChannel, usingBlock: { data in
                 println("subscribeToChannel: \(data)")

                    }

                case .MessageDeleted:

                    guard let
                        messageInfo = messageInfo["message"] as? JSONDictionary,
                        messageID = messageInfo["id"] as? String

                    handleMessageDeletedFromServer(messageID: messageID)
                }
            })
        }
    }

