     }
     
     public var mirrored: Link {
-        let L = self.copy()
+        let L = self.copy(name: "m\(name)")
         for x in L.crossings {
             x.changeCrossing()
         }

        return Set( crossings.flatMap{ x -> [Edge] in x.edges } )
    }
    
    public func copy() -> Link {
        let edges = Dictionary(pairs: allEdges.map{ e -> (Int, Edge) in (e.id, e) } )
        
        let copiedEdges = edges.mapValues{ e in Edge(e.id) }

    }
    
    public var reversed: Link {
        let L = self.copy(name: "-\(name)")
        for e in L.allEdges {
            e.reverse()
        }
