 
 extension ConversationViewController {
 
+    func loadMessagesFromServer(withTimeDirection timeDirection: TimeDirection, invalidMessageIDSet: Set<String>? = nil, failed: (() -> Void)? = nil, completion: ((messageIDs: [String], noMore: Bool) -> Void)? = nil) {
+
+        guard let recipient = recipient else {
+            failed?()
+            return
+        }
+
+        messagesFromRecipient(recipient, withTimeDirection: timeDirection, failureHandler: { reason, errorMessage in
+            defaultFailureHandler(reason: reason, errorMessage: errorMessage)
+
+            SafeDispatch.async {
+                failed?()
+            }
+
+        }, completion: { _messageIDs, noMore in
+            println("@ messagesFromRecipient: \(_messageIDs.count)")
+            var messageIDs: [String] = []
+            if let invalidMessageIDSet = invalidMessageIDSet {
+                for messageID in _messageIDs {
+                    if !invalidMessageIDSet.contains(messageID) {
+                        messageIDs.append(messageID)
+                    }
+                }
+            } else {
+                messageIDs = _messageIDs
+            }
+            println("# messagesFromRecipient: \(messageIDs.count)")
+
+            SafeDispatch.async {
+                completion?(messageIDs: messageIDs, noMore: noMore)
+            }
+        })
+    }
+
     func tryLoadPreviousMessages(completion: () -> Void) {
 
         if isLoadingPreviousMessages {


        if displayedMessagesRange.location == 0 {

            guard let recipient = recipient else {
                completion()
                return

                    completion()
                }
            })
             */

        } else {
            var newMessagesCount = self.messagesBunchCount
