                 }
 
             }, afterDeleted: {
-                SafeDispatch.async {
-                    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
+                SafeDispatch.async { [weak self, weak tableView] in
+
+                    guard let strongSelf = self else { return }
+
+                    // double check
+                    guard conversationsCount == (strongSelf.conversations.count - 1) else {
+                        tableView?.reloadData()
+                        return
+                    }
+
+                    tableView?.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
                 }
 
             }, orCanceled: {
-                SafeDispatch.async {
-                    tableView.setEditing(false, animated: true)
+                SafeDispatch.async { [weak tableView] in
+                    tableView?.setEditing(false, animated: true)
                 }
             })
         }

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

        if editingStyle == .Delete {
            
            guard let conversation = conversations[safe: indexPath.row] else {
                tableView.setEditing(false, animated: true)


            tryDeleteOrClearHistoryOfConversation(conversation, inViewController: self, whenAfterClearedHistory: {

                SafeDispatch.async { [weak self, weak tableView] in

                    guard let tableView = tableView else { return }

                    tableView.setEditing(false, animated: true)

                    // update cell

                    if let cell = tableView.cellForRowAtIndexPath(indexPath) as? ConversationCell {
                        if let conversation = self?.conversations[safe: indexPath.row] {
                            let radius = min(CGRectGetWidth(cell.avatarImageView.bounds), CGRectGetHeight(cell.avatarImageView.bounds)) * 0.5
                            cell.configureWithConversation(conversation, avatarRadius: radius, tableView: tableView, indexPath: indexPath)
                        }
