refactor Edge::clone