Can't we make these pure virtual? It's been a while since I used templates in C++.