separating out combination generation.