     var getABAddressPropertyKey: String {
         get {
             switch (self) {
-            case .AddressPropertyCity:
+            case .City:
                 return kABPersonAddressCityKey as! String
-            case .AddressPropertyState:
+            case .State:
                 return kABPersonAddressStateKey as! String
-            case .AddressPropertyZipCode:
+            case .ZipCode:
                 return kABPersonAddressZIPKey as! String
-            case .AddressPropertyCountry:
+            case .Country:
                 return kABPersonAddressCountryKey as! String
-            case .AddressPropertyCountryCode:
+            case .CountryCode:
                 return kABPersonAddressCountryCodeKey as! String
             default:
                 return kABPersonAddressStreetKey as! String

                }
                
                let multiValue: MultiValue<Dictionary<U, V>> = MultiValue(id: id, key: key!, value: newValue)
                arrValues?.append(multiValue)
            }
        }
        
        return arrValues?.count > 0 ? arrValues : nil
    }
}


        property: ABPropertyID,
        convertor: (T) -> U) -> Array<MultiValue<Dictionary<U, V>>>?
    {
        var propertyValues: Array<MultiValue<Dictionary<U, V>>>?
        let values: ABMultiValue? = self.getSingleProperty(record: record, property: property)
        
        propertyValues = []
        for i: Int in 0..<(ABMultiValueGetCount(values)) {
            if let value: Dictionary<String, V>? = ABMultiValueCopyValueAtIndex(values, i).takeRetainedValue() as? Dictionary<String, V> {
                let id: Int = Int(ABMultiValueGetIdentifierAtIndex(values, i))
