Attempt at providing a 'virtual template function' abstraction. Appears to have bugs still.