Ok, i do understand that interfaces do not provide implementation and only supply abstract methods/ properties, but if we'll take your example of of the foreach, in the examples i saw when a class implement the IEnumerable interfaces it didn't had to re-define the all MoveNext,Current,Reset methods of the IEnumerator interfaces, they just used the GetEnumerator methods that already defined in the Array class.

Anyway I'm sure something i still not set correctly in my mind about interfaces and i still need to understand and read more about this subject.

if you have something to add that may help me to get there please do.

as always, thanks a lot for the help JM