I've just found out that using a foreach loop is bad (an extra GC alloc). I've got to do a loop on a dictionary on each update and currently using a foreach. I've found out that there is another way to do a loop on dictionary using for with elementAt by using System.Linq. the questions are: Why is it bad to use for + elementAt for dictionary loop? Can System.Linq be used by Net 2.0 subset? Is there any other way to do a dictionary loop without foreach? Still learning C#, Thank you.