         stackView.spacing = -overlap
         addSubview(stackView)
         updateAllConstraints()
-        
-        self.avatarViews.removeAll()
-        stackView.arrangedSubviews.forEach { stackView.removeArrangedSubview($0) }
-        stackView.subviews.forEach { $0.removeFromSuperview() }
+        updateMargins()
+        updateAvatars()
+    }
+    
+    func updateAvatars() {
+        avatarViews.forEach { $0.removeFromSuperview() }
+        avatarViews.removeAll()
         
         if avatars.isEmpty {
             addAvatar(for: nil)

    
    @IBInspectable open var overlap: CGFloat = 10 {
        didSet {
            updateAllConstraints()
        }
    }
    

    
    open func update(with avatars: [AvatarPresentable]) {
        self.avatars = avatars
        updateAvatars()
    }
    
}
