completed template class.