         }
         
         set {
-            let imageData: NSData = UIImagePNGRepresentation(newValue)
+            guard let val = newValue else { return }
+            guard let imageData: NSData = UIImagePNGRepresentation(val) else { return }
             ABPersonSetImageData(self.record, imageData, nil)
         }
     }

        if values != nil {
            result = []
            for value: MultiValue<Dictionary<AddressProperty, T>> in values! {
                let dictionary = value.value
                
                var ABAddressDictionary = Dictionary<String, AnyObject>()
                for (key: AddressProperty, value: T) in dictionary! {
                    ABAddressDictionary[key.getABAddressPropertyKey] = value
                }
                

        }
    }
    
    public var compositeName: String? {
        return ABRecordCopyCompositeName(self.record).takeRetainedValue() as String
    }
    
    public var emails: Array<MultiValue<String>>? {
        get {
            return self.getMultiValueProperty(kABPersonEmailProperty)
