I agree with you and I understood the compiler error. The explanation is exactly what your are saying : B_T is in the A_T'Class but a function returning B_T does not return a class-wide type. You have defined Fa_Ptr to be an access type to a function returning a class-wide type rooted in type A_T. Also in my example I do not really need to work with abstract type. In fact what I am intending to do is not to compile this exact program, but to be able to create a Class (here A_T) and a pointer on functions which would be �usable/available� for all functions defined in the hierarchy (i.e. Ptr : A.Fa_Ptr := B.Fa'access). Also, in my �design issue� I can�t use Class wide type except in package A). Thanks. -- Ce message a ete poste via la plateforme Web club-Internet.fr This message has been posted by the Web platform club-Internet.fr http://forums.club-internet.fr/