 ///                      replaced.
 /// - parameter block:   A block that declares the layout for `views`.
 ///
-@discardableResult public func constrain(_ views: [View], replace group: ConstraintGroup = ConstraintGroup(), block: ([LayoutProxy]) -> ()) -> ConstraintGroup {
+@discardableResult public func constrain(_ views: [View], replace group: ConstraintGroup? = nil, block: ([LayoutProxy]) -> ()) -> ConstraintGroup {
+    let constraintGroup = group ?? ConstraintGroup()
     let context = Context()
     block(views.map({ LayoutProxy(context, $0) }))
-    group.replaceConstraints(context.constraints)
+    constraintGroup.replaceConstraints(context.constraints)
 
-    return group
+    return constraintGroup
 }
 
 /// Updates the constraints of a dictionary of views.

    }
    
    block(dict)
    group.replaceConstraints(context.constraints)

    return group
}

/// Removes all constraints for a group.

///                      replaced.
/// - parameter block:   A block that declares the layout for the views.
///
@discardableResult public func constrain(_ view1: View, _ view2: View, _ view3: View, _ view4: View, replace group: ConstraintGroup? = nil, block: (LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
    let constraintGroup = group ?? ConstraintGroup()
    let context = Context()
    block(LayoutProxy(context, view1), LayoutProxy(context, view2), LayoutProxy(context, view3), LayoutProxy(context, view4))
    constraintGroup.replaceConstraints(context.constraints)

    return constraintGroup
}

/// Updates the constraints of five views.
