In my case, I am using pointers to objects; so, I actually have to 'use' all derived type packages and then make the procedure call without full dot notation, such as: use A; use B; ... ... Run_Widget( UnknownWidget.all ); Where UnknownWidget is a pointer to the class wide type. Is there a better way of doing this? If I add a new package with another derived type, then I have to go add 'uses' to all packages that make calls to methods of the class. Tony Matthew Heaney wrote: > > In article <7pcar9$aeg@hobbes.crc.com> , "David C. Hoos, Sr." > wrote: > > > Without a class-wide Run_Widget, however, the call to > > Run_Widget with an actual parameter of type BigWidget is > > illegal -- a type conversion is required there. > > > > Yes, but that's because you used expanded name notation: > > A.Run_Widget (The_BigWidget); -- illegal > > If you want to call the version of the operation that's primitive for > BigWidget, then you have to name the correct operation: > > B.Run_Widget (The_BigWidget); > > No type conversion is required. > > >> With the change, you can say: > >> > >> B.Run_Widget (The_BigWidget); > >> > >> and all is well. > -- > Matt > > It is impossible to feel great confidence in a negative theory which has > always rested its main support on the weak points of its opponent. > > Joseph Needham, "A Mechanistic Criticism of Vitalism"