what was the reason for making this a template class? it's never instantiated with different types.