 //public view controller use to provide a UIAppearanceContainer for customisation while keeping main root view controller internal
 public class VeneerViewController: UIViewController { }
 
+class HighlightView: UIView {
+    
+    @available(*, unavailable, message: "init(frame:) is unavailable, use init(highlight:) instead")
+    override init(frame: CGRect) { fatalError() }
+    
+    @available(*, unavailable, message: "init?(coder:) is unavailable, use init(highlight:) instead")
+    required init?(coder aDecoder: NSCoder) { fatalError() }
+    
+    init(highlight: Highlight) {
+        super.init(frame: .zero)
+    }
+}
+
 class VeneerRootViewController: VeneerViewController {
+    
+    override static func initialize() {
+        //set default appearance values, can be overriden (see example app delegate)
+        UIView.appearance(whenContainedInInstancesOf: [VeneerViewController.self]).backgroundColor = UIColor.black.withAlphaComponent(0.3)
+        
+        //highlight view
+        HighlightView.appearance(whenContainedInInstancesOf: [VeneerViewController.self]).backgroundColor = .blue
+    }
     
     @available(*, unavailable, message: "init(coder:) is unavailable, use init(highlights:) instead")
     required init?(coder aDecoder: NSCoder) { fatalError() }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { fatalError() }
    
    let highlights: [Highlight]
    
    required init(highlights: [Highlight]) {
        self.highlights = highlights

        super.init(nibName: nil, bundle: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //add views for highlights
        highlightViews = highlights.map { HighlightView(highlight: $0) }
        highlightViews.forEach { highlightView in
            self.view.addSubview(highlightView)
        }
        
        let dismissTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(VeneerRootViewController.dismissCurrentVeneer))
        self.view.addGestureRecognizer(dismissTapGestureRecognizer)
