             return background.contrastingColor
         }
 
+        private func updateColors() {
+            self.backgroundColor = self.backgroundColor(for: status)
+            self.foregroundColor = self.foregroundColor(for: status)
+        }
+
         private func foregroundColorDidChange() {
             titleLabel.textColor = foregroundColor
             lockIcon.tintColor = foregroundColor

        }

        let hairlineBorderColor: UIColor = CompatibleColor.quaternaryLabel

        private static let minimumLabelHeight: CGFloat = 24
        private static let minimumButtonHeight: CGFloat = 44

            layer.borderColor = hairlineBorderColor.cgColor
        }

        override func tintColorDidChange() {
            super.tintColorDidChange()
            updateColors()
        }

        required init?(coder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }

        func update(status: Status, callToAction: CallToActionType, animated: Bool) {
            self.status = status

            // Update the label with a crossfade UIView.transition; UIView.animate doesn't provide an animation for text changes
            let text: String? = {
                switch status {
