         }
     }
     
-    public func addArrangedSubview(view: UIView) {
-        _arrangedSubviews.append(view)
-    }
-    
-    public func removeArrangedSubview(view: UIView) {
-        if let index = find(_arrangedSubviews, view) {
-            _arrangedSubviews.removeAtIndex(index)
-        }
-    }
-
-    public func insertArrangedSubview(view: UIView, atIndex stackIndex: Int) {
-        _arrangedSubviews.insert(view, atIndex: stackIndex)
+    func addArrangedSubview(view: UIView) {
+        view.setTranslatesAutoresizingMaskIntoConstraints(false)
+        addSubview(view)
+        arrangedSubviews.append(view)
+    }
+    
+    func removeArrangedSubview(view: UIView) {
+        if let index = find(arrangedSubviews, view) {
+            arrangedSubviews.removeAtIndex(index)
+        }
+    }
+
+    func insertArrangedSubview(view: UIView, atIndex stackIndex: Int) {
+        arrangedSubviews.insert(view, atIndex: stackIndex)
     }
 
     override public func updateConstraints() {

    private var animatingToHiddenViews = [UIView]()

    public init(arrangedSubviews: [UIView] = []) {
        self._arrangedSubviews = arrangedSubviews
        super.init(frame: CGRectZero)

        for arrangedSubview in arrangedSubviews {
            arrangedSubview.setTranslatesAutoresizingMaskIntoConstraints(false)
            addSubview(arrangedSubview)
        }
        registerHiddenListeners()
        registerHiddenListeners()
    }
    
    private func registerHiddenListeners() {
        for arrangedSubview in arrangedSubviews {
            removeHiddenListener(arrangedSubview)
            addHiddenListener(arrangedSubview)
        }
    }
    

struct TZAnimationDidStopQueueEntry: Equatable {
    let view: UIView
    let hidden: Bool
}

func ==(lhs: TZAnimationDidStopQueueEntry, rhs: TZAnimationDidStopQueueEntry) -> Bool {
