Hello, I have a few "hardware" types, for example uint16 and uint32. And I want to write a functions that will set or clear bits of such types. For example: function Bit_Set(word: uint16; bitn: natural) return uint16; function Bit_Set(word: uint16; bitn: natural) return uint16 is mask: uint16 := 2**bitn; begin return word or mask; end Bit_Set; However, I realize that such a function would be almost completely duplicated for the uint32 type. In C++ I would probably define it as a template on the type of the word, and the compiler would do the job for me. In Ada, however, when using generics it doesn't seem I can leave the same function name for all types (as I would do in overloading). I can define a generic Bit_Set, but then I have to specialize it for uin16 and uint32 with different function names. Is there any way I could combine the effects of generics and overloading and get a single Bit_Set for all my types without writing the code N times ? P.S. Ada95 Thanks, Eli