Hmm. So each call to list is creating a new set of objects.... You probably don't have to call list that often, and this is probably fine. You're half-way to making BuildInRingtone immutable, and if you finished that, then you could cache the objects.  But probably not worth doing given time constraints.