 
     public init(arrangedSubviews: [UIView] = []) {
         super.init(frame: CGRectZero)
+        commonInit(arrangedSubviews)
+    }
+    
+    override public init(frame: CGRect) {
+        super.init(frame: frame)
+        commonInit([])
+    }
+
+    required public init(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)!
+        commonInit([])
+    }
+    
+    private func commonInit(arrangedSubviews: [UIView]) {
         for arrangedSubview in arrangedSubviews {
             arrangedSubview.translatesAutoresizingMaskIntoConstraints = false
             addSubview(arrangedSubview)

        // This removes `hidden` value KVO observers using didSet()
        { self.arrangedSubviews = [] }()
    }
    
    private func registerHiddenListeners(previousArrangedSubviews: [UIView]) {
        for subview in previousArrangedSubviews {
            self.removeHiddenListener(subview)

        super.updateConstraints()
    }

    private func addSpacerView() -> TZSpacerView {
        let spacerView = TZSpacerView()
        spacerView.translatesAutoresizingMaskIntoConstraints = false
