         self.setupGroupViews()
 
         self.cancelGroupView.removeConstraints(self.cancelControlConstraints)
-        self.cancelControlConstraints = self.constraintsForControls(self.cancelControls)
+        self.cancelControlConstraints = self.constraintsForViews(self.cancelControls)
         self.cancelGroupView.addConstraints(self.cancelControlConstraints)
         self.actionGroupView.removeConstraints(self.actionControlConstraints)
-        self.actionControlConstraints = self.constraintsForControls(self.actionControls)
+        self.actionControlConstraints = self.constraintsForViews(self.actionControlsWithTitle())
         self.actionGroupView.addConstraints(self.actionControlConstraints)
     }
 

        return button
    }
}

        )
    }

    private func constraintsForViews(views: [UIView]) -> [NSLayoutConstraint] {
        var constraints: [NSLayoutConstraint] = []

        var sibling: UIView?
        for view in views {
            let isLast = view == views.last
            constraints.appendContentsOf(self.horizontalConstraintsForView(view))
            constraints.appendContentsOf(self.verticalConstraintsForView(view, isLast: isLast, sibling: sibling))

            sibling = view
        }
        
        return constraints
    }

    private func horizontalConstraintsForView(view: UIView) -> [NSLayoutConstraint] {
        return NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[view]-0-|",
            options: .DirectionLeadingToTrailing,
            metrics: nil,
            views: ["view": view])
    }

    private func verticalConstraintsForView(view: UIView, isLast: Bool, sibling: UIView?) -> [NSLayoutConstraint] {
        var constraints: [NSLayoutConstraint] = []
        var height = self.controlHeight
        if view == self.titleView {
            height = self.titleHeight
        }
        if let sibling = sibling {
            constraints.appendContentsOf(NSLayoutConstraint.constraintsWithVisualFormat("V:[view(height)]-spacing-[sibling]",
                options: .DirectionLeadingToTrailing,
                metrics: ["spacing": self.spacing, "height": height],
                views: ["view": view, "sibling": sibling]) )
        } else {
            constraints.appendContentsOf(NSLayoutConstraint.constraintsWithVisualFormat("V:[view(height)]-0-|",
                options: .DirectionLeadingToTrailing,
                metrics: ["height": height],
                views: ["view": view]) )
        }
        if isLast {
            constraints.appendContentsOf(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[view]",
                options: .DirectionLeadingToTrailing,
                metrics: nil,
                views: ["view": view]) )
        }
        return constraints
    }
