list can contain duplicates