   }
 
   func sectionIndexTitles(for tableView: UITableView) -> [String]? {
-    return dataSource.sortedContacts.keys.sorted()
+    if isSearchActive {
+      return nil
+    } else {
+      return dataSource.sortedContacts.keys.sorted()
+    }
   }
 }
 
 extension ContactPicker: UITableViewDelegate {
   func numberOfSections(in tableView: UITableView) -> Int {
-    return dataSource.sortedContacts.keys.count
-  }
-
-  func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int)
-      -> String? {
-    return dataSource.sortedContacts.keys.sorted()[section]
-  }
-
-  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)
-      -> Int {
-    let key = dataSource.sortedContacts.keys.sorted()[section]
-    return (dataSource.sortedContacts[key]?.count)!
+    if isSearchActive {
+      return 1
+    } else {
+      return dataSource.sortedContacts.keys.count
+    }
+  }
+
+  func tableView(_ tableView: UITableView,
+                 titleForHeaderInSection section: Int) -> String? {
+    if isSearchActive {
+      return nil
+    } else {
+      return dataSource.sortedContacts.keys.sorted()[section]
+    }
+  }
+
+  func tableView(_ tableView: UITableView,
+                 numberOfRowsInSection section: Int) -> Int {
+    if isSearchActive {
+      return dataSource.filteredContacts.count
+    } else {
+      let key = dataSource.sortedContacts.keys.sorted()[section]
+      return (dataSource.sortedContacts[key]?.count)!
+    }
   }
 
   func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,

}

extension ContactPicker: UITableViewDataSource {
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
      -> UITableViewCell {
    guard
      let contact = self.contact(for: indexPath),
      let info = self.cell(for: contact),


  fileprivate func contact(for indexPath: IndexPath) -> String? {
    guard
      let key =
          dataSource.sortedContacts.keys.sorted()[safe: indexPath.section],
      let contacts = isSearchActive ? dataSource.filteredContacts
                                    : dataSource.sortedContacts[key]
    else {
        return nil
    }
    return contacts[safe: indexPath.row]
  }

  fileprivate func selectContact(fbid: String) {
