     }
 }
 
-public func <=(lhs: Relationship, rhs: Relationship) -> Bool {
-    return lhs.id <= rhs.id
+extension Relationship : Comparable {
+    static public func ==(lhs: Relationship, rhs: Relationship) -> Bool {
+        return lhs.id == rhs.id
+    }
+
+    static public func <(lhs: Relationship, rhs: Relationship) -> Bool {
+        return lhs.id < rhs.id
+    }
 }
-
-public func >=(lhs: Relationship, rhs: Relationship) -> Bool {
-    return lhs.id >= rhs.id
-}
-
-public func >(lhs: Relationship, rhs: Relationship) -> Bool {
-    return lhs.id > rhs.id
-}
-
-public func <(lhs: Relationship, rhs: Relationship) -> Bool {
-    return lhs.id < rhs.id
-}

            managedNode.managedObjectContext?.performAndWait { [unowned self] in
                n = self.managedNode.subject
            }
            return nil == n ? nil : Entity(managedNode: n!)
        }
        set(entity) {
            managedNode.managedObjectContext?.performAndWait { [unowned self] in

            managedNode.managedObjectContext?.performAndWait { [unowned self] in
                n = self.managedNode.object
            }
            return n.map { Entity(managedNode: $0) }
        }
        set(entity) {
            managedNode.managedObjectContext?.performAndWait { [unowned self] in
