         
         self.accessoryType = .disclosureIndicator
         
-        let stackView = UIStackView(arrangedSubviews: [self.titleLabel, self.subtitleLabel])
-        stackView.axis = .horizontal
+        self.contentView.addSubview(self.thumbnailImageView)
         
-        stackView.translatesAutoresizingMaskIntoConstraints = false
-        self.contentView.addSubview(stackView)
+        self.stackView = UIStackView(arrangedSubviews: [self.titleLabel, self.subtitleLabel])
+        self.stackView.axis = .horizontal
+        self.stackView.translatesAutoresizingMaskIntoConstraints = false
+        self.contentView.addSubview(self.stackView)
         
         NSLayoutConstraint.activate([
-            stackView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor,
-                                               constant: Const.margin),
-            stackView.topAnchor.constraint(equalTo: self.contentView.topAnchor,
-                                           constant: Const.margin),
-            stackView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor),
-            stackView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor,
-                                              constant: -Const.margin)
+            self.thumbnailImageView.centerYAnchor.constraint(equalTo: self.contentView.centerYAnchor),
+            self.thumbnailImageView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor,
+                                                             constant: Const.margin),
+            self.thumbnailImageView.heightAnchor.constraint(equalToConstant: Const.imageSize),
+            self.imageWidthConstraint,
+            
+            self.imageSpaceConstraint,
+            self.stackView.topAnchor.constraint(equalTo: self.contentView.topAnchor,
+                                                constant: Const.margin),
+            self.stackView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor),
+            self.stackView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor,
+                                                   constant: -Const.margin)
         ])
     }
     
     func update(viewModel: SettingsItemViewModel) {
         self.titleLabel.text = viewModel.title
         self.subtitleLabel.text = viewModel.subtitle
+        self.thumbnailImageView.image = viewModel.thumbnail
+        
+        self.imageWidthConstraint.constant = viewModel.thumbnail != nil ? Const.imageSize : 0
+        self.imageSpaceConstraint.constant = viewModel.thumbnail != nil ? Const.margin : 0
+        
+        self.contentView.layoutIfNeeded()
     }
     
 }

    
    enum Const {
        static let margin: CGFloat = 15
    }
    
    private lazy var titleLabel: UILabel = {
        let label = UILabel()

        return label
    }()

    private lazy var imageWidthConstraint: NSLayoutConstraint = {
        return self.thumbnailImageView.widthAnchor.constraint(equalToConstant: Const.imageSize)
    }()
    
    private lazy var imageSpaceConstraint: NSLayoutConstraint = {
        return self.stackView.leadingAnchor.constraint(equalTo: self.thumbnailImageView.trailingAnchor,
                                                       constant: Const.margin)
    }()
    
    // MARK: - Init
    
    override func initialSetup() {
