     }
 
     public init(composition elements: VisualFormat...) {
-        var t = [VisualFormat]()
-        for elem in elements {
-            switch elem {
+        let t = flatMap(elements) { e -> [VisualFormat] in
+            switch e {
             case Composition(let c):
-                for i in c { t.append(i) }
+                return c
             default:
-                t.append(elem)
+                return [e]
             }
         }
         self = .Composition(t)

    }

    var relatedViews: [LayoutViewName] {
        var d = [LayoutViewName]()
        switch self {
        case View(let v):
            for i in v.relatedViews {
                d.append(i)
            }
        case Composition(let c):
            for i in c {
                for j in i.relatedViews {
                    d.append(j)
                }
            }
        default:
            break;
        }
        return d
    }

    var viewsDictionary: [NSObject:AnyObject] {

                s.append(sv)
            }
        }

        if count(s) > 0 {
            return s[0] // FIXME
        }
