     }
     
     public func add<S: StyleType>(styles: [S]) -> Component<T> {
-        return Component<T>(styles: self.styles + styles.map(AnyStyle.init), children: children)
+        return Component<T>(styles: self.styles.union(styles.lazy.map(AnyStyle.init)), children: children)
     }
     
     public func configure(view: T) {

}

public struct Component<T: UIView>: ComponentType {
    public let styles: [AnyStyle]
    let children: [ChildComponent]
    
    public init() {
        self.init(styles: [], children: [])
    }
    
    init(styles: [AnyStyle], children: [ChildComponent]) {
        self.styles = styles
        self.children = children
    }

        self.access = { view in access(view as! T) }
    }
    
    var styles: Set<AnyStyle> {
        return component.styles
    }
    
