         }
     }
 
-    private func transformConstant(c: CGFloat) -> CGFloat {
+    func transformConstant(c: CGFloat) -> CGFloat {
         switch self {
         case .Top, .Leading:
             return c

        return [top, leading, bottom, trailing].flatMap { $0 }
    }

    public subscript (edge: LayoutEdge) -> NSLayoutConstraint? {
        get {
            switch edge {
            case .Top:      return top


// MARK: - LayoutEdge

private enum LayoutEdge {

    case Top, Leading, Bottom, Trailing

    static let Horizontal = [Leading, Trailing]
    static let Vertical = [Top, Bottom]
    static let All = [Top, Leading, Bottom, Trailing]

    var axis: UILayoutConstraintAxis {
        switch self {
        case .Top, .Bottom:
            return .Vertical
