         let contact = filteredContacts[OrderedDictionaryIndex(indexPath.section)].value[indexPath.row] // TODO: Create a func contactFor(indexPath: NSIndexPath)
         var actions = [UITableViewRowAction]()
         
+        // TODO: Need contactMethodDisplayName for the Email and Phone strings
         // Has at least 1 email
         if contact.contactMethods.any({$0.isEmail}) {
             let email = UITableViewRowAction(style: .Normal, title: "Email", handler: emailActionHandler)

        return true
    }
    
    // TODO: Move
    private func removeContact(index: NSIndexPath)
    {
        let dictionaryKey = filteredContacts[OrderedDictionaryIndex(index.section)].key
        let arrayIndex = index.row
        
        // NOTE: Because arrays are value types, we need to make a new one and then re-assign, hopefully the compiler will recognize this and optimize...
        // TODO: Test the performance of this...
        
        // Get the contact array
        var potentialSectionContacts = filteredContacts[dictionaryKey]
        // TODO: if the above is nil, something went wrong...
        assert(potentialSectionContacts != nil)
        
        // Remove the contact
        // TODO: also need to delete from contactsList...
        potentialSectionContacts?.removeAtIndex(arrayIndex)
        
        // Either
        if potentialSectionContacts?.count > 0 {
            // Remove the row
            tableView.deleteRowsAtIndexPaths([index], withRowAnimation: .Fade)
        }
        else {
            // Remove the entire section
            tableView.deleteSections(NSIndexSet(index: index.section), withRowAnimation: .Fade)
        }
    }
    
    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath index: NSIndexPath) {
        if editingStyle == .Delete {
            removeContact(index)

    }
    
    // MARK: Utilitiy Functions
    
    private func removeContact(index: NSIndexPath)
    {
        let dictionaryKey = filteredContacts[OrderedDictionaryIndex(index.section)].key
        let arrayIndex = index.row
        
        // NOTE: Because arrays are value types, we need to make a new one and then re-assign, hopefully the compiler will recognize this and optimize...
        // TODO: Test the performance of this...
        
        // Get the contact array
        var potentialSectionContacts = filteredContacts[dictionaryKey]
        // TODO: if the above is nil, something went wrong...
        assert(potentialSectionContacts != nil)
        
        // Remove the contact
        // TODO: also need to delete from contactsList...
        potentialSectionContacts?.removeAtIndex(arrayIndex)
        
        // Either
        if potentialSectionContacts?.count > 0 {
            // Remove the row
            tableView.deleteRowsAtIndexPaths([index], withRowAnimation: .Fade)
        }
        else {
            // Remove the entire section
            tableView.deleteSections(NSIndexSet(index: index.section), withRowAnimation: .Fade)
        }
    }
    
    private func contactSection(contact: Contact) -> String? {
        return sortOrderKey(primarySortOrder, forContact: contact)
