 /// :param: replace The `ConstraintGroup` whose constraints should be replaced.
 /// :param: block   A block that declares the layout for `views`.
 ///
-public func constrain<T: Hashable>(views: [T: View], replace group: ConstraintGroup = ConstraintGroup(), block: ([T : LayoutProxy] -> ())) -> ConstraintGroup {
+public func constrain<T: Hashable>(views: [T: View], replace group: ConstraintGroup = ConstraintGroup(), @noescape block: ([T : LayoutProxy] -> ())) -> ConstraintGroup {
     let context = Context()
     let proxies = map(views) { ($0, LayoutProxy(context, $1)) }
     block(Dictionary(proxies))

/// :param: replace The `ConstraintGroup` whose constraints should be replaced.
/// :param: block   A block that declares the layout for the views.
///
public func constrain(v1: View, v2: View, v3: View, replace group: ConstraintGroup = ConstraintGroup(), block: (LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
    let context = Context()
    block(LayoutProxy(context, v1), LayoutProxy(context, v2), LayoutProxy(context, v3))
    group.replaceConstraints(context.constraints, performLayout: false)

/// :param: replace The `ConstraintGroup` whose constraints should be replaced.
/// :param: block   A block that declares the layout for the views.
///
public func constrain(v1: View, v2: View, replace group: ConstraintGroup = ConstraintGroup(), @noescape block: (LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
    let context = Context()
    block(LayoutProxy(context, v1), LayoutProxy(context, v2))
    group.replaceConstraints(context.constraints, performLayout: false)
