worked on template class generation