         :returns: Single value of the property
     */
     class func getSingleProperty<T>(#record: ABRecord, property: ABPropertyID) -> T? {
-        var value: AnyObject? = ABRecordCopyValue(record, property).takeRetainedValue()
+        var propertyValue: AnyObject? = ABRecordCopyValue(record, property)?.takeRetainedValue()
         
-        return value as? T
+        return propertyValue as? T
     }
     
     /**

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


    var getABAddressPropertyKey: String {
        get {
            switch (self) {
            case .City:
                return kABPersonAddressCityKey as! String
            case .State:
                return kABPersonAddressStateKey as! String
            case .ZipCode:
                return kABPersonAddressZIPKey as! String
            case .Country:
                return kABPersonAddressCountryKey as! String
            case .CountryCode:
                return kABPersonAddressCountryCodeKey as! String
            default:
                return kABPersonAddressStreetKey as! String
