added template classed subtypes