added a cartesian product