restructured template class argument