   }
 }
 
-extension ContactPicker : UITableViewDataSource {
+extension ContactPicker: UITableViewDataSource {
   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
       -> UITableViewCell {
     guard
       let contact = self.contact(for: indexPath),
+      let info = self.cell(for: contact),
       let cell =
-          tableView.dequeueReusableCell(withIdentifier: FriendCell.identifier,
-                                        for: indexPath)
-              as? ConfigurableTableViewCell
+          tableView.dequeueReusableCell(withIdentifier: ContactCell.identifier,
+                                        for: indexPath) as? ContactCell
     else {
       return UITableViewCell()
     }
 
-    let cellInfo = dataSource.cells.filter { (ci) in
-      return (ci as! FriendCellInfo).fbid == contact
-    }.first! as! FriendCellInfo
-    cell.configure(cellInfo: cellInfo)
+    cell.configure(info: info)
     cell.accessoryType =
-        dataSource.selectedContacts.contains(cellInfo.fbid) ? .checkmark : .none
+        dataSource.selectedContacts.contains(info.fbid) ? .checkmark : .none
     return cell
   }
 

    if cells.isEmpty {
      let sortOrder = CNContactsUserDefaults.shared().sortOrder
      Facebook.getTaggableFriends(limit: .none) { (friend) in
        self.cells.append(FriendCellInfo(from: friend))

        var key: String
        switch (sortOrder) {

import SnapKit
import Contacts

struct ContactCellInfo {
  let cellIdentifier = ContactCell.identifier

  let fbid: String
  let name: String
  let picture: String
