product set refactor