started to add support for a cartesian product, reworked project structure