     }
 }
 
-
-
-
-
-
-
-
-
-
-
-
-
+// MARK: - Person Actions
+
+public class AddressBookMapPeople<T>: AddressBookGetResource {
+
+    let transform: (AddressBookPerson) -> T?
+    var results = Array<T>()
+
+    public init(registrar: AddressBookPermissionRegistrar?, inGroupNamed groupName: String? = .None, transform: (AddressBookPerson) -> T?) {
+        self.transform = transform
+        super.init(registrar: registrar)
+        if let groupName = groupName {
+            groupQuery = .Name(groupName)
+            addCondition(AddressBookGroupExistsCondition(registrar: registrar, name: groupName))
+        }
+    }
+
+    override func executeAddressBookTask() -> ErrorType? {
+        if let error = super.executeAddressBookTask() {
+            return error
+        }
+        return mapPeople()
+    }
+
+    func mapPeople() -> ErrorType? {
+        results = people().flatMap { flatMap(self.transform($0), { [$0] }) ?? [] }
+        return .None
+    }
+}
+
+
+
+
+
+
+
+
+
+
+

        }
    }

    func allPeople() -> [AddressBookPerson] {
        if let source = source() {
            return addressBook.peopleInSource(source)
        }
        else {

    }
}

// MARK: - Group Actions

public class AddressBookGetGroup: AddressBookGetResource {

