generalization of combine, need to clean up Combinations.hs