ported to c# under set intersect design