Templated out abstract types