added List.permutations