     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

    init(key: String) {
        switch (key) {
            case kABPersonAddressCityKey as! String:
                self = .AddressPropertyCity
            case kABPersonAddressStateKey as! String:
                self = .AddressPropertyState
            case kABPersonAddressZIPKey as! String:
                self = .AddressPropertyZipCode
            case kABPersonAddressCountryKey as! String:
                self = .AddressPropertyCountry
            case kABPersonAddressCountryCodeKey as! String:
                self = .AddressPropertyCountryCode
            default:
                self = .AddressPropertyStreet
        }
    }
    

        :returns: Value of property as an array of multi value instances
    */
    class func getMultiValueProperty<T>(#record: ABRecord, property: ABPropertyID) -> Array<MultiValue<T>>? {
        var propertyValues: Array<MultiValue<T>>?
        let values: ABMultiValue? = self.getSingleProperty(record: record, property: property)
        
        propertyValues = []
        for i: Int in 0..<(ABMultiValueGetCount(values)) {
            if let value: T? = ABMultiValueCopyValueAtIndex(values, i)?.takeRetainedValue() as? T {
                let id: Int = Int(ABMultiValueGetIdentifierAtIndex(values, i))
                let key: String? = ABMultiValueCopyLabelAtIndex(values, i).takeRetainedValue() as String
                let multiValue: MultiValue<T> = MultiValue(id: id, key: key!, value: value)
                
                propertyValues?.append(multiValue)
            }
        }
        
        return propertyValues
    }
    
    /**
