     }
 
     /// The default size is `55,55`.
-    public var imageSize = CGSize(width: 55, height: 55) {
-        didSet {
-            imageSizeConstraints.width?.constant  = imageSize.width
-            imageSizeConstraints.height?.constant = imageSize.height
+    public dynamic var imageSize = CGSize(width: 55, height: 55) {
+        didSet {
+            setImageSize(imageSize)
         }
     }
 
     /// The space between image and text. The default value is `8`.
-    public var textImageSpacing: CGFloat = 8 {
-        didSet {
-            imageAndTitleSpacingConstraint?.constant = textImageSpacing
+    public dynamic var textImageSpacing: CGFloat = 8 {
+        didSet {
+            setTextImageSpacing(textImageSpacing)
         }
     }
 
     /// The default value is `false`.
-    public var isImageViewHidden: Bool = false {
+    public dynamic var isImageViewHidden: Bool = false {
         didSet {
             guard oldValue != isImageViewHidden else { return }
             if isImageViewHidden {
-                imageSize        = .zero
-                textImageSpacing = 0
+                setImageSize(.zero)
+                setTextImageSpacing(0)
             } else {
-                imageSize        = CGSize(width: 55, height: 55)
-                textImageSpacing = paddingSmall
+                setImageSize(imageSize)
+                setTextImageSpacing(textImageSpacing)
             }
         }
     }
 
     /// The default value is `true`.
-    public var isRoundImageView = true {
-        didSet {
-            avatarView.layer.cornerRadius = isRoundImageView ? imageSize.height/2 : 0
+    public dynamic var isRoundImageView = true {
+        didSet {
+            avatarView.layer.cornerRadius = isRoundImageView ? imageSize.height / 2 : 0
         }
     }
 
     /// The background color of the cell when it is highlighted.
-    public var highlightedBackgroundColor: UIColor?
+    public dynamic var highlightedBackgroundColor: UIColor?
     private var regularBackgroundColor: UIColor?
     private var observeBackgroundColorSetter = true
     public override var backgroundColor: UIColor? {

        contentView.addSubview(v)
        return v
    }
}

// MARK: UIAppearance Properties

        // Avatar Center
        NSLayoutConstraint.centerY(avatarView).activate()

        imageAndTitleSpacingConstraint = NSLayoutConstraint(item: titleLabel, attribute: .Leading, toItem: avatarView, attribute: .Trailing, constant: textImageSpacing).activate()

        // Content Constraints
        contentConstraints.left   = NSLayoutConstraint(item: avatarView, attribute: .Leading, toItem: contentView, constant: contentInset.left).activate()
        contentConstraints.right  = NSLayoutConstraint(item: contentView, attribute: .Trailing, toItem: titleLabel, constant: contentInset.right).activate()
        contentConstraints.top    = NSLayoutConstraint(item: avatarView, attribute: .Top, relatedBy: .GreaterThanOrEqual, toItem: contentView, constant: contentInset.top).activate()
        contentConstraints.bottom = NSLayoutConstraint(item: contentView, attribute: .Bottom, relatedBy: .GreaterThanOrEqual, toItem: avatarView, constant: contentInset.bottom).activate()
    }

    private func getSpacerView() -> UIView {
