     }
 }
 
+public func ==<Builder: ComponentBuilderType>(lhs: Builder, rhs: Builder) -> Bool {
+    return lhs.name == rhs.name
+}
+
+// MARK: Component Target
+
 public typealias ManuallyFittingHeightResolver = (fittingWidth: CGFloat, childrenHeights: [CGFloat], metrics: LayoutMetrics) -> CGFloat
 
-public class ComponentTarget: Hashable {
+public class ComponentTarget {
     public let name: String
 
     let targetClass: AnyClass

    }
}

public func ==(lhs: ComponentTarget, rhs: ComponentTarget) -> Bool {
    return lhs.name == rhs.name
}

import Foundation

// MARK: Component Builder

public protocol ComponentBuilderType: Hashable, Equatable {
    // FIXME: do we really need Hashable?
    static var types: [Self: AnyClass] { get }
}
