OutputWriter didn't need to be a template class

replaced with a new class DefaultPrinter with a template operator()
function