public IPair <E1, E2> Modulo(IPair <E1, E2> l, IPair <E1, E2> r) { return(new Pair <E1, E2>(Factory1.Modulo(l.Item1, r.Item1), Factory2.Modulo(l.Item2, r.Item2))); }