I just tried to declare these 2 procedures in 3.3.1 and got an error. You can declare them in the reverse order with no problem. A bug? generic procedure DoThis<T>(msg: T); begin end; procedure DoThis(msg: TObject); // Overloaded identifier "DoThis" isn't a function begin end; Regards, Ryan Joseph