complete GetEnumerator function