         replaceConstraints(context.constraints, performLayout: true)
     }
 
-    mutating func layout<T: Hashable>(views: [T: View], block:([T : LayoutProxy] -> ())) {
+    func layout<T: Hashable>(views: [T: View], block:([T : LayoutProxy] -> ())) {
         let context = Context()
         let result = map(views) { ($0, LayoutProxy(context, $1)) }
 

}

public extension ConstraintGroup {
    mutating func constrain(view: View, block: LayoutProxy -> ()) {
        let context = Context()

        block(LayoutProxy(context, view))

        replaceConstraints(context.constraints, performLayout: true)
    }

    func layout(v1: View, _ v2: View, _ v3: View, block: (LayoutProxy, LayoutProxy, LayoutProxy) -> ()) {
        let context = Context()

        block(LayoutProxy(context, v1), LayoutProxy(context, v2), LayoutProxy(context, v3))
