* improved template instantiation based on parameters