new impl of duplexCopy()