I would envision internal interfaces to be of the following form. Elements in the PROPS section could either be implemented by compatible fields or properties in an implementing type. --leeo INTERFACE MicrosoftNETPrototype; IFACE ICloneable= IMPLEMENTS METHODS Clone(): ROOT END; IEnumerable= IMPLEMENTS METHODS GetEnumerator(): IEnumerator END; IEnumerator= IMPLEMENTS PROPS Current: ROOT RAISES{ InvalidOperatorException }; METHODS MoveNext(): BOOLEAN RAISES{ InvalidOperatorException }; Reset() RAISES { InvalidOperatorException }; END; ICollection= IMPLEMENTS IEnumerator PROPS Count: INTEGER; IsSynchronized: BOOLEAN; SyncRoot: MUTEX; METHODS CopyTo( array: ARRAY; index: INTEGER ) RAISES { ArgumentNullException, ArgumentOutOfRangeException, ArgumentException, InvalidCastException }; END; END.