We chose not to use templates because current compilers vary in their ability to support templates, and because templates were not sufficiently expressive.