     func updateSpacingConstraints() {
         canvas.subviews.filter{ $0 is Spacer }.forEach{ $0.removeFromSuperview() }
         
-        let fromEdge: ALEdge = hor ? .Leading : .Top
-        let toEdge: ALEdge = hor ? .Trailing : .Bottom
+        let fromEdge: ALEdge = horizontal ? .Leading : .Top
+        let toEdge: ALEdge = horizontal ? .Trailing : .Bottom
         
         guard spacersEnabled else {
             // Set spacing without creating spacers
-            let _ = canvas.arrangedSubviews.reduce(nil as UIView?) { previous, current in
+            let _ = views.reduce(nil as UIView?) { previous, current in
                 if let previous = previous {
                     let constraint = current.autoPinEdge(fromEdge, toEdge: toEdge, ofView: previous, withOffset: spacing)
                     constraint.identifier = "ASV-spacing"

        
        // Join views using spacers
        var spacers = [Spacer]()
        let _ = canvas.arrangedSubviews.reduce(nil as UIView?) { previous, current in
            if let previous = previous {
                let spacer = Spacer()
                canvas.addSubview(spacer)

    }
    
    public required init?(coder aDecoder: NSCoder) {
        arrangedSubviews = []
        super.init(coder: aDecoder)
        commonInit()
        
        // FIXME:
        arrangedSubviews.appendContentsOf(subviews)
        invalidateLayout()
    }
    
    private func commonInit() {
        layoutMargins = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8)
        alignmentArrangement = AlignedLayoutArrangement(canvas: self)
        distributionArrangement = DistributionLayoutArrangement(canvas: self)
    }

    // MARK: Managing Arranged Views
    
    public func addArrangedSubview(view: UIView) {
        if view.superview != view && !arrangedSubviews.contains(view) {
            arrangedSubviews.append(view)
            addSubview(view)
            invalidateLayout()
        }
    }

